# ATELIER PROFESSIONNEL DELPHI [OCT-NOV 2003] --- SUJET D'EXERCICE # # API WIN32 -- MESSAGES, HANDLES, IDIOMES D'APPELS POUR VALEURS DE TAILLES # ---------------------------------------------------------------------------- MODALITES DE RENDU ---------------------------------------------------------------------------- - Répertoire : ~/rendu/ap/delphi/win32api -- ATTENTION aux minuscules !!! - Fichiers : Fichiers .dpr, .res, .dof, .cfg, .opt, .pas, .dfm --> NE RENDEZ PAS les fichiers .exe, .dcu, .~* et .dsk - Droits : 700 pour les répertoires, 600 pour les fichiers - Date : mardi 28/10/2003 à 08:30 ---------------------------------------------------------------------------- Etape 1 - Fermez-la ! ---------------------------------------------------------------------------- Créez une nouvelle application. Son nom DOIT être APIDemo. Elle n'a qu'une seule fiche, qui s'appelle évidemment frmMain, dans Main_frm.pas. Cette fiche doit refuser de se fermer quand le chiffre des minutes de l'heure actuelle est impair. Toutefois, elle fait une exception pour la fermeture de session Windows (ou le redémarrage/arrêt de la machine), où elle accepte de se fermer. Aspects techniques : - Message WM_QUERYENDSESSION à traiter - Evénement OnClose de TForm et son argument Action - Fonctions standard Now, DecodeTime et Odd ---------------------------------------------------------------------------- Etape 2 - Les rois de la drague ---------------------------------------------------------------------------- Votre fiche ne contient qu'une grosse TListBox, nommée lstFiles, alignée de façon à occuper toute la zone client de la fiche. Cette liste doit être réceptive au glissement de fichiers depuis l'Explorateur Windows. Lorsque l'utilisateur y "lâche" des fichiers, la liste s'ajoute en éléments les noms de ceux-ci. Aspects techniques : - Message WM_DROPFILES à traiter - Fonctions API DragAcceptFiles, DragQueryFile et DragFinish - Fonction standard SetLength - Méthodes BeginUpdate et EndUpdate de TStrings - try/finally Attention : - N'oubliez pas d'appeler DragAcceptFile(..., False) quand la fenêtre se ferme (pour de bon) - N'oubliez également pas d'appeler DragFinish avec le bon argument quand vous avez terminé le traitement du message ! - DragQueryFile dispose de plusieurs modes d'appel visant à vous fournir le nombre de fichiers ayant été lâchés et, pour un fichier donné, la taille de son nom. Utilisez ces modes d'appel pour votre boucle et le dimensionnement, à chaque pas, de votre string. - Les fonctions API concernées sont déclarées par Delphi dans l'unité ShellAPI, qu'il vous faudra ajouter à la clause Uses de votre implémentation. -- Fin de Sujet --