Recevoir des notifications des contrôles communs
Les contrôles communs sont des fenêtres enfants qui envoient des messages de notification de la fenêtre parente lorsque des événements, tels que des entrées utilisateur, se produisent dans le contrôle.
L'application s'appuie sur ces messages de notification pour déterminer quelle action l'utilisateur souhaite qu'elle effectue. La plupart des contrôles communs envoient des messages de notification comme des messages WM_NOTIFY. Les contrôles Windows envoie la plupart des messages de notification comme des messages WM_COMMAND. CWnd::OnNotify est le responsable du message WM_NOTIFY. Comme avec CWnd::OnCommand, l'implémentation de OnNotify distribue le message de notification à OnCmdMsg pour gérer des tables des messages. L'entrée de la table des messages de gestion des notifications est ON_NOTIFY. Pour plus d'informations, consultez la Note technique 61 : Messages ON_NOTIFY et WM_NOTIFY.
Sinon, une classe dérivée peut traiter ses propres messages de notification avec "renvoi du message". Pour plus d'informations, consultez la Note technique 62 : Renvoi de message pour les contrôles Windows.
Récupérer la position du curseur dans un message de notification
Occasionnellement, 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 est utile de déterminer l'emplacement du curseur actuel 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 extrait uniquement la position du curseur lorsque le message a été envoyé. Étant donné que le curseur a peut-être été supprimé depuis que le message a été envoyé vous devez appeler CWnd::GetCursorPos pour obtenir la position actuelle du curseur.
Notes
CWnd::GetCurrentMessage doit être appelé uniquement dans un gestionnaire de messages.
Ajoutez le code dans le 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
Référence
Faisant et utilisation des contrôles