WM_NOTIFY (mensagem)

Enviado por um controle comum para sua janela pai quando um evento ocorreu ou o controle requer algumas informações.

Parâmetros

wParam

O identificador do controle comum que envia a mensagem. Não há garantia de que esse identificador seja exclusivo. Um aplicativo deve usar o membro hwndFrom ou idFrom da estrutura NMHDR (passada como o parâmetro lParam ) para identificar o controle.

lParam

Um ponteiro para uma estrutura NMHDR que contém o código de notificação e informações adicionais. Para algumas mensagens de notificação, esse parâmetro aponta para uma estrutura maior que tem a estrutura NMHDR como seu primeiro membro.

Valor retornado

O valor retornado é ignorado, exceto para mensagens de notificação que especificam o contrário.

Comentários

O destino da mensagem deve ser o HWND do pai do controle. Esse valor pode ser obtido usando GetParent, conforme mostrado no exemplo a seguir, em que m_controlHwnd é o HWND do próprio controle.

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

Os aplicativos lidam com a mensagem no procedimento de janela da janela pai, conforme mostrado no exemplo a seguir, que manipula a mensagem de notificação enviada pelo controle personalizado no exemplo 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;
}

Algumas notificações, principalmente aquelas que estão na API há muito tempo, são enviadas como mensagens WM_COMMAND . Para obter mais informações, consulte Controlar mensagens.

Se o manipulador de mensagens estiver em um procedimento de caixa de diálogo, você deverá usar a função SetWindowLong com DWL_MSGRESULT para definir um valor retornado.

Para o Windows Vista e sistemas posteriores, a mensagem WM_NOTIFY não pode ser enviada entre processos.

Muitas notificações estão disponíveis nos formatos ANSI e Unicode. A janela que envia a mensagem WM_NOTIFY usa a mensagem WM_NOTIFYFORMAT para determinar qual formato deve ser usado. Confira WM_NOTIFYFORMAT para mais discussões.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho
Winuser.h

Confira também

WM_NOTIFYFORMAT