WM_NOTIFY (message)
Envoyé par un contrôle commun à sa fenêtre parente lorsqu’un événement s’est produit ou que le contrôle nécessite des informations.
Paramètres
-
wParam
-
Identificateur du contrôle commun qui envoie le message. Il n’est pas garanti que cet identificateur soit unique. Une application doit utiliser le membre hwndFrom ou idFrom de la structure NMHDR (passé en tant que paramètre lParam ) pour identifier le contrôle.
-
lParam
-
Pointeur vers une structure NMHDR qui contient le code de notification et des informations supplémentaires. Pour certains messages de notification, ce paramètre pointe vers une structure plus grande qui a la structure NMHDR comme premier membre.
Valeur retournée
La valeur de retour est ignorée, sauf pour les messages de notification qui spécifient le contraire.
Notes
La destination du message doit être le HWND du parent du contrôle. Cette valeur peut être obtenue à l’aide de GetParent, comme illustré dans l’exemple suivant, où m_controlHwnd est le HWND du contrôle lui-même.
NMHDR nmh;
nmh.code = CUSTOM_SELCHANGE; // Message type defined by control.
nmh.idFrom = GetDlgCtrlID(m_controlHwnd);
nmh.hwndFrom = m_controlHwnd;
SendMessage(GetParent(m_controlHwnd),
WM_NOTIFY,
nmh.idFrom,
(LPARAM)&nmh);
Les applications gèrent le message dans la procédure de fenêtre de la fenêtre parente, comme illustré dans l’exemple suivant, qui gère le message de notification envoyé par le contrôle personnalisé dans l’exemple précédent.
INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_NOTIFY:
switch (((LPNMHDR)lParam)->code)
{
case CUSTOM_SELCHANGE:
if (((LPNMHDR)lParam)->idFrom == IDC_CUSTOMLISTBOX1)
{
... // Respond to message.
return TRUE;
}
break;
... // More cases on WM_NOTIFY switch.
break;
}
... // More cases on message switch.
}
return FALSE;
}
Certaines notifications, principalement celles qui se trouvent dans l’API depuis longtemps, sont envoyées en tant que messages WM_COMMAND . Pour plus d’informations, consultez Contrôler les messages.
Si le gestionnaire de messages se trouve dans une procédure de boîte de dialogue, vous devez utiliser la fonction SetWindowLong avec DWL_MSGRESULT pour définir une valeur de retour.
Pour les systèmes Windows Vista et ultérieur, le message WM_NOTIFY ne peut pas être envoyé entre les processus.
De nombreuses notifications sont disponibles aux formats ANSI et Unicode. La fenêtre qui envoie le message WM_NOTIFY utilise le message WM_NOTIFYFORMAT pour déterminer le format à utiliser. Pour plus d’informations, consultez WM_NOTIFYFORMAT .
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows Vista [applications de bureau uniquement] |
Serveur minimal pris en charge |
Windows Server 2003 [applications de bureau uniquement] |
En-tête |
|