WM_NOTIFY (messaggio)

Inviato da un controllo comune alla relativa 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 che sia 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 che contiene il codice di notifica e informazioni aggiuntive. 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, ad eccezione dei 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, dove m_controlHwnd è L'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 routine finestra 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 si trovano nell'API da 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 finestra di dialogo, è necessario utilizzare la funzione SetWindowLong con DWL_MSGRESULT per impostare un valore restituito.

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

Molte notifiche sono disponibili sia nei formati ANSI che Unicode. La finestra che invia il messaggio di WM_NOTIFY utilizza il messaggio WM_NOTIFYFORMAT per determinare quale formato deve essere utilizzato. Per altre informazioni, 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