WM_NOTIFY (messaggio)

Inviato da un controllo comune alla finestra padre quando si è verificato un evento o il controllo richiede alcune informazioni.

Parametri

wParam

Identificatore del controllo comune che invia il messaggio. Questo identificatore non è garantito essere univoco. Un'applicazione deve usare il membro hwndFrom o idFrom della struttura NMHDR (passato come parametro lParam ) per identificare il controllo.

lParam

Puntatore a una struttura NMHDR contenente il codice di notifica e altre informazioni. Per alcuni messaggi di notifica, questo parametro punta a una struttura più grande con la struttura NMHDR come primo membro.

Valore restituito

Il valore restituito viene ignorato tranne per i messaggi di notifica che specificano in caso contrario.

Commenti

La destinazione del messaggio deve essere HWND dell'elemento padre del controllo. Questo valore può essere ottenuto usando GetParent, come illustrato nell'esempio seguente, in cui m_controlHwnd è HWND del controllo stesso.

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);

Le applicazioni gestiscono il messaggio nella procedura della finestra padre, come illustrato nell'esempio seguente, che gestisce il messaggio di notifica inviato dal controllo personalizzato nell'esempio precedente.

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;
}

Alcune notifiche, principalmente quelle che sono state nell'API per molto tempo, vengono inviate come messaggi WM_COMMAND . Per altre informazioni, vedere Messaggi di controllo.

Se il gestore messaggi si trova in una procedura di dialogo, è necessario usare la funzione SetWindowLong con DWL_MSGRESULT per impostare un valore restituito.

Per i sistemi Windows Vista e versioni successive, il messaggio di WM_NOTIFY non può essere inviato tra processi.

Molte notifiche sono disponibili in formati ANSI e Unicode. La finestra che invia il messaggio di WM_NOTIFY usa il messaggio di WM_NOTIFYFORMAT per determinare quale formato deve essere usato. Per altre discussioni, vedere WM_NOTIFYFORMAT .

Requisiti

Requisito Valore
Client minimo supportato
Windows Vista [solo app desktop]
Server minimo supportato
Windows Server 2003 [solo app desktop]
Intestazione
Winuser

Vedi anche

WM_NOTIFYFORMAT