Partager via


Réception des notifications de contrôles communs

Les contrôles courants sont des fenêtres enfants qui envoient des messages de notification à la fenêtre parente lorsque des événements, tels que l’entrée de l’utilisateur, se produisent dans le contrôle.

L’application s’appuie sur ces messages de notification pour déterminer l’action que l’utilisateur souhaite prendre. Les contrôles les plus courants envoient des messages de notification en tant que messages WM_NOTIFY. Les contrôles Windows envoient la plupart des messages de notification en tant que messages WM_COMMAND. CWnd ::OnNotify est le gestionnaire du message WM_NOTIFY. Comme avec CWnd::OnCommand, l’implémentation de OnNotify dispatche le message de notification vers pour OnCmdMsg la gestion dans les mappages de messages. L’entrée de mappage de messages pour la gestion des notifications est ON_NOTIFY. Pour plus d’informations, consultez la Note technique 61 : ON_NOTIFY et WM_NOTIFY Messages.

Sinon, une classe dérivée peut gérer ses propres messages de notification à l’aide de la « réflexion de message ». Pour plus d’informations, consultez la Note technique 62 : Message Réflexions ion pour les contrôles Windows.

Récupération de la position du curseur dans un message de notification

À l’occasion, il est utile de déterminer la position actuelle du curseur lorsque certains messages de notification sont reçus par un contrôle commun. Par exemple, il serait utile de déterminer l’emplacement actuel du curseur lorsqu’un contrôle commun reçoit un message de notification NM_RCLICK.

Il existe un moyen simple d’y parvenir en appelant CWnd::GetCurrentMessage. Toutefois, cette méthode récupère uniquement la position du curseur au moment de l’envoi du message. Étant donné que le curseur a peut-être été déplacé depuis que le message a été envoyé, vous devez appeler CWnd::GetCursorPos pour obtenir la position actuelle du curseur.

Remarque

CWnd::GetCurrentMessage ne doit être appelé qu’au sein d’un gestionnaire de messages.

Ajoutez le code suivant au corps du gestionnaire de messages de notification (dans cet exemple, NM_RCLICK) :

CPoint cursorPos;
cursorPos.x = GetCurrentMessage()->pt.x;
cursorPos.y = GetCurrentMessage()->pt.y;

À ce stade, l’emplacement du curseur de la souris est stocké dans l’objet cursorPos .

Voir aussi

Création et utilisation de contrôles
Contrôles