Quelques messages/notifications de gestion des fenêtres Windows
Message envoyé lors des appels à CreateWindow/CreateWindowEx. La procédure de gestion des messages reçoit le message après création de la fenêtre mais avant qu'elle ne devienne visible.
Si la procédure de gestion des messages retourne -1 sur ce message, la fenêtre sera automatiquement détruite. 0 pour continuer...
wParam est inutilisélParam contient un pointeur sur CREATESTRUCT.
Equivalent à WM_CREATE mais pour des dialogues.
L'utilisateur demande à quitter l'application. C'est le moment de libérer toutes les ressources ! Puis lancer un message WM_QUIT via PostQuitMessage() pour permettre à l'application de sortir de sa boucle de lecture de la file des messages.
Message envoyé par PostQuitMessage().
wParam Le code de sortie transmis par PostQuitMessage() que votre application doit retourner au système.lParam est inutilisé.
Message reçu a partir du moment où la fenêtre change de taille.
wParam
Indique le type de changement de taille
Valeur | Désignation |
SIZE_MAXHIDE | Message is sent to all pop-up windows when some other window is maximized. |
SIZE_MAXIMIZED | La fenêtre occupe tout l'écran |
SIZE_MAXSHOW | Message is sent to all pop-up windows when some other window has been restored to its former size. |
SIZE_MINIMIZED | Mis sous forme d'icône |
SIZE_RESTORED | Modification de taille autre que taille maxi ou mini |
lParam
La partie basse contient la largeur de la zone client.La partie haute contient la hauteur de la zone client.
Message reçu lorsqu'une fenêtre a été déplacée.
wParam
N'est pas utilisélParam
La partie basse contient la position X de la fenêtre.La partie haute contient la position Y de la fenêtre.
Ce message est envoyé à une fenêtre lorsqu'il est nécessaire d'effacer la partie cliente afin de la redessiner. Or ce message peut être néfaste lorsque votre application est un jeu. En général, vous avez déjà une procédure gérant l'affichage, et le fait que windows vide lui aussi la zone client peut dans le meilleur des cas être moche à l'écran (effet de flash), voire affecter le rendu à l'écran. Il peut alors être intéressant d'intercepter ce message, généralement pour ne rien faire !
wParam contient un pointeur sur un contexte de périphérique
Voir aussi Gérer la couleur de fond d'une fenêtre après création de celle-ci
case WM_ERASEBKGND:
return 0; // Pour indiquer à la procédure de gestion des messages par défaut que vous avez traité le message.
WM_QUERYENDSESSION (notification)
Si vous voulez demander confirmation avant d'interrompre ou de quitter un programme il faut traiter WM_CLOSE, mais aussi WM_QUERYENDSESSION, qui est envoyé à
chaque fenêtre lorsque l'utilisateur ferme son application dans le menu système (ou fermeture du gestionnaire de programme). Si une fenêtre répond 0 à ce message, la session Windows n'est pas interrompue.Cf. WM_ENDSESSION, WM_DESTROY, WM_QUIT
En complément de WM_QUERYENDSESSION, si notre fenêtre est d'accord pour terminer la session, WM_ENDSESSION est envoyé à chaque procédure de fenêtre ayant précédemment reçu un message WM_QUERYENDSESSION. Le paramètre wParam vaut 0 si la session ne peut-être interrompue car un autre programme à répondu 0.
Ce message indique qu'il faut changer de fonte (cf. fontes pour les paramètres) dans une fenêtre/contrôle.
Ce message est envoyé lorsqu'un timer a son temps écoulé.
wParam sera renseigné avec le numéro d'identification du timer.
lParam sera un pointeur sur la fonction a déclencher pour le timer (la fonction définie dans SetTimer()).
Les messages SB_xxxxx sont traités dans le chapitre sur la barre de status:SB_SETMINHEIGHT, SB_SETPARTS, SB_GETPARTS, SB_GETBORDERS, SB_SETTEXT, SB_GETTEXTLENGTH, SB_GETTEXT, SB_SETTIPTEXT, SB_GETTIPTEXT, SB_ISSIMPLE, SB_SIMPLE, SB_SETICON, SB_GETICON, SB_GETRECT, SB_SETBKCOLOR, SB_GETBORDERS
Un objet a besoin d'être redessiné.
wParam sera alors l'Id de l'objet/fenêtre
lParam sera un pointeur sur une structure de type DRAWITEMSTRUCT.
Exemple avec la barre de status.
Et pour les menus
Envoyé par un contrôle à son parent pour indiquer qu'un évènement se produit, ou qu'il a besoin d'informations. wParam est l'identifiant du contrôle, lParam pointeur sur une structure NMHDR.
indique qu'une fenêtre de l'application vient d'acquérir le focus (les évènements clavier, souris seront appliqués à cette fenêtre).
indique qu'une fenêtre vient de perdre le focus.
WM_KEYDOWN (Voir aussi WM_CHAR et WM_DEADCHAR) ou WM_SYSKEYDOWN (voir WM_SYSCHAR et WM_SYSDEADCHAR)
une touche est enfoncée. Voir le clavier et les messages liés.
une touche est relachée. Voir le clavier et les messages liés.
Si une application traite ce message, elle doit retourner 0. Envoyé lorsqu'une fenêtre appartenant à une autre application que la fenêtre active est sur le point d' être activés. Le message est envoyé à l'application dont la fenêtre est activé et l'application dont la fenêtre va être désactivé. wParam vaut TRUE s'il s'agit de la fenêtre qui va être activée, FALSE si en cours de désactivation. lParam identifiant du thread de l'autre fenêtre...
Message envoyé aux fenêtres filles ou enfants lorsque l'utilisateur clique sur la barre de titre, déplace, retaille ou active la fenêtre. Ne pas oublier de retourner 0 si vous traiter le message dans votre application (cf. fenêtres filles).
Demande de la taille de la chaîne de caractères représentant le titre (cette taille peut être plus grande que la taille réelle d'affichage car certains caractères peuvent occuper plusieurs octets). La procédure DefWindowProc (Procédure de gestion des fenêtres par défaut) retourne alors cette taille dans le type LRESULT.
Message perso. cf. thread - PostThreadMessage
Bouton gauche de la souris préssé. lParam contient les positions, wParam l'état des boutons de la souris.
Bouton gauche de la souris relaché. lParam contient les positions, wParam l'état des boutons de la souris.
WM_LBUTTONDBLCLK
Double cliques sur le bouton gauche de la souris. lParam contient les positions, wParam l'état des boutons de la souris.
Bouton droit de la souris préssé. lParam contient les positions, wParam l'état des boutons de la souris.
Bouton droit de la souris relaché. lParam contient les positions, wParam l'état des boutons de la souris.
WM_RBUTTONDBLCLK
Double cliques sur le bouton droit de la souris. lParam contient les positions, wParam l'état des boutons de la souris.
Bouton du milieu de la souris préssé. lParam contient les positions, wParam l'état des boutons de la souris.
Bouton du milieu de la souris relaché. lParam contient les positions, wParam l'état des boutons de la souris.
WM_MBUTTONDBLCLK
Double cliques sur le bouton du milieu de la souris. lParam contient les positions, wParam l'état des boutons de la souris.
La souris se déplace dans la zone client de la fenêtre. lParam contient les positions, wParam l'état des boutons de la souris.
Message indiquant que des fichiers sont droppée sur une fenêtre. Ce message n'est pas envoyé automatiquement, il faut en effet indiquer à Windows que la fenêtre accepte ce genre d'opérations.
WM_XBUTTONDOWN, WM_XBUTTONUP, WM_XBUTTONDBLCLK
Pour les souris à plus de trois boutons...
Déplacement de la molette de la souris...
MSH_MOUSEWHEEL pour Windows 95 et NT 3.51 de zmouse.h
Indique à la fenêtre que le contenu du presse-papiers a changé. Il faut s'enregistrer auprès de Windows pour recevoir ce message.
Indique qu'un programme se retire de la liste des Clipboard Viewer.
WM_MENUCHAR, WM_MEASUREITEM, WM_INITMENUPOPUP, WM_MENUSELECT, WM_INITMENU
Des options pour gérer les menus
dans un menu permet de préciser l'option choisie.
Il va donc falloir différencier les messages provenant d'un menu et celui d'une fenêtre enfant, surtout si les ID correspondent. Le mieux sera donc de faire en sorte que les ID soient tous différents !
Mais si des ID étaient identiques, pas de problème, tout est prévu:
LOWORD de lParam sera à 0 pour un menu, alors qu'il contient un ID de contrôle, càd le handle de la fenêtre enfant sinon.
HIWORD est à 0 pour un menu, sinon, il s'agit du code de notification d'un contrôle.wParam contient l'ID de menu.
Similaire à WM_COMMAND mais pour le système. Les explications pour un menu, avec le systray
Message destiné à la procédure par défaut de gestion des messages d'une fenêtre. Ce message provoquera de nouveaux messages que vous pourrez ensuite traiter.
Votre fenêtre vient de perdre la capture de la souris.
Annexes
Gestion de la file des messages
La procédure de gestion des messages