Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les contrôles communs sont des fenêtres enfants qui envoient des messages de notification à la fenêtre parente lorsque des événements, tels que les entrées de l’utilisateur, se produisent au sein du contrôle.
L’application s’appuie sur ces messages de notification pour déterminer l’action que l’utilisateur souhaite qu’elle effectue. 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 envoie le message de notification vers OnCmdMsg pour la gestion dans les cartes de messages. L’entrée de table de messages pour la gestion des notifications est ON_NOTIFY. Pour plus d’informations, consultez la note technique 61 : ON_NOTIFY et les messages WM_NOTIFY.
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 : Réflexion des messages 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 .