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