WM_NOTIFY (mensaje)

Enviado por un control común a su ventana primaria cuando se ha producido un evento o el control requiere cierta información.

Parámetros

wParam

Identificador del control común que envía el mensaje. No se garantiza que este identificador sea único. Una aplicación debe usar el miembro hwndFrom o idFrom de la estructura NMHDR (que se pasa como el parámetro lParam ) para identificar el control.

lParam

Puntero a una estructura NMHDR que contiene el código de notificación e información adicional. Para algunos mensajes de notificación, este parámetro apunta a una estructura mayor que tiene la estructura NMHDR como su primer miembro.

Valor devuelto

El valor devuelto se omite, excepto los mensajes de notificación que especifican lo contrario.

Comentarios

El destino del mensaje debe ser el HWND del elemento primario del control. Este valor se puede obtener mediante GetParent, como se muestra en el ejemplo siguiente, donde m_controlHwnd es el HWND del propio control.

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

Las aplicaciones controlan el mensaje en el procedimiento de ventana de la ventana primaria, como se muestra en el ejemplo siguiente, que controla el mensaje de notificación enviado por el control personalizado en el ejemplo anterior.

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

Algunas notificaciones, principalmente las que han estado en la API durante mucho tiempo, se envían como mensajes WM_COMMAND . Para obtener más información, vea Mensajes de control.

Si el controlador de mensajes está en un procedimiento de cuadro de diálogo, debe usar la función SetWindowLong con DWL_MSGRESULT para establecer un valor devuelto.

En el caso de Windows Vista y sistemas posteriores, no se puede enviar el mensaje WM_NOTIFY entre procesos.

Muchas notificaciones están disponibles en formatos ANSI y Unicode. La ventana que envía el mensaje WM_NOTIFY usa el mensaje WM_NOTIFYFORMAT para determinar qué formato se debe usar. Consulte WM_NOTIFYFORMAT para obtener más información.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado
Winuser.h

Consulte también

WM_NOTIFYFORMAT