_Messaggio di notifica WM

Inviato da un controllo comune alla relativa finestra padre quando si verifica un evento oppure il controllo richiede alcune informazioni.

Parametri

wParam

Identificatore del controllo comune che invia il messaggio. Questo identificatore non è necessariamente univoco. Per identificare il controllo, un'applicazione deve usare il membro hwndFrom o IdFrom della struttura NMHDR , passata come parametro lParam .

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ù ampia con la struttura NMHDR come primo membro.

Valore restituito

Il valore restituito viene ignorato tranne che 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 tramite 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 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 di _ comando WM . Per ulteriori informazioni, vedere Control Messages.

Se il gestore di messaggi si trova in una routine della finestra di dialogo, è necessario utilizzare la funzione SetWindowLong con DWL _ MSGRESULT per impostare un valore restituito.

Per i sistemi Windows Vista e versioni successive, non è possibile inviare il messaggio di _ notifica WM tra i processi.

Molte notifiche sono disponibili nei formati ANSI e Unicode. La finestra che invia il messaggio di _ notifica WM usa il messaggio WM _ NOTIFYFORMAT per determinare il formato da usare. Per ulteriori informazioni, vedere WM _ NOTIFYFORMAT .

Requisiti

Requisito Valore
Client minimo supportato
[Solo app desktop di Windows Vista]
Server minimo supportato
[Solo app desktop Windows Server 2003]
Intestazione
Winuser. h

Vedi anche

_NOTIFYFORMAT WM