Recevoir la notification des contrôles communs
Les contrôles communs sont des fenêtres enfants qui envoient des messages de notification à la fenêtre parente lorsque les événements, tels que l'entrée de l'utilisateur, se produisent dans le contrôle.
L'application compte sur ces messages de notification pour déterminer quelle action l'utilisateur le souhaite d'utiliser.La plupart des contrôles communs envoient des messages de notification en tant que messages de WM_NOTIFY .Les contrôles Windows envoient la plupart des messages de notification en tant que messages de WM_COMMAND .CWnd::OnNotify est le gestionnaire du message de WM_NOTIFY .Comme avec CWnd::OnCommand, l'implémentation de OnNotify distribue le message de notification à OnCmdMsg pour gérer dans les tables des messages.L'entrée de la table des messages pour gérer les notifications est ON_NOTIFY.Pour plus d'informations, consultez note technique 61 : messages d'ON_NOTIFY et de WM_NOTIFY.
Sinon, une classe dérivée peut gérer ses propres messages de notification utilisant « renvoi de message ». Pour plus d'informations, consultez note technique 62 : renvoi de message pour des contrôles Windows.
Récupérer la position du curseur dans un message de notification
Quelquefois, 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 lorsqu'un contrôle commun reçoit un message de notification de NM_RCLICK .
Il existe une méthode simple d'effectuer cette opération en appelant CWnd::GetCurrentMessage.Toutefois, cette méthode extrait uniquement la position du curseur au moment où le message a été envoyé.Étant donné que le curseur a peut-être été déplacé étant donné que le message a été envoyé vous devez appeler CWnd::GetCursorPos pour obtenir la position du curseur actuelle.
[!REMARQUE]
CWnd::GetCurrentMessage doit être appelé dans 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 d' cursorPos .
Voir aussi
Référence
Faisant et l'utilisation des contrôles