WM_NOTIFY (message)

Envoyé par un contrôle commun à sa fenêtre parente lorsqu’un événement s’est produit ou si le contrôle nécessite des informations.

Paramètres

wParam

Identificateur du contrôle commun qui envoie le message. Cet identificateur n’est pas garanti comme étant 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 à l’exception des messages de notification qui spécifient sinon.

Notes

La destination du message doit être le HWND du parent du contrôle. Cette valeur peut être obtenue à l’aide de GetParent, comme indiqué 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 indiqué 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 Messages de contrôle.

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 Windows systèmes Vista et ultérieurs, le message WM_NOTIFY ne peut pas être envoyé entre les processus.

De nombreuses notifications sont disponibles dans les 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
Winuser.h

Voir aussi

WM_NOTIFYFORMAT