|
|||
Fermer
UTILISATION DES TYPES D'ENREGISTREMENTS PERMETTANT DE RECUPERER DIRECTEMENT LES PARAMETRES DES MESSAGES
Delphi nous met à disposition des types d'enregistrements permettant de récupérer directement les paramètres des messages (sans passer par des transtypages). Ces types sont déclarés dans l'unité message.pas (Si vous le possédez, allez voir le source de message.pas ) Par exemple, le type TWMMouse permettra de récupérer la position de la souris en x (XPos) et en y (YPos) lors de la réception du message WM_LBUTTONDOWN TWMMouse = record Msg: Cardinal; Keys: Longint; case Integer of 0: ( XPos: Smallint; YPos: Smallint); 1: ( Pos: TSmallPoint; Result: Longint); end; Comment utiliser ces types ? Exemple : on cherche à limiter la dimension mini et maxi de la fenêtre de notre application lorsque l'utilisateur la redimensionne. On sait (ou je vous apprends) que dans un tel cas, des messages WM_GETMINMAXINFO sont émis. En faisant une recherche (par exemple sur les caractères GETMINMAXINFO) dans le source message.pas (oui je sais, tout le monde ne l'a pas) On trouve le type TWMGetMinMaxInfo TWMGetMinMaxInfo = record Msg: Cardinal; Unused: Integer; MinMaxInfo: PMinMaxInfo; // MinMaxInfo va nous permettre de limiter les dimensions de la fenêtre Result: Longint; end; et en faisant une recherche dans le source de l'unité windows.pas, on trouve la déclaration de PMinMaxInfo // Struct pointed to by WM_GETMINMAXINFO lParam PMinMaxInfo = ^TMinMaxInfo;// pointeur sur le type TMinMaxInfo TMinMaxInfo = packed record ptReserved: TPoint; ptMaxSize: TPoint; ptMaxPosition: TPoint; ptMinTrackSize: TPoint; // largeur et hauteur mini de la fenêtre ptMaxTrackSize: TPoint; // largeur et hauteur maxi de la fenêtre end; rapel : de la déclaration de TPoint: type TPoint = record X: Longint; // largeur Y: Longint; // hauteur end;
Ouvrez un nouveau projet et ajoutez y un TCheckBox
Ajoutons dans la partie private de la déclaration du type TForm1 :
Implémentons notre procédure WMGetMinMaxInfo
Testez votre programme ..
|