WM_NOTIFY - сообщение
Отправляется общим элементом управления в его родительское окно, когда произошло событие или элементу управления требуется некоторая информация.
Параметры
-
wParam
-
Идентификатор общего элемента управления, отправляющего сообщение. Этот идентификатор не гарантируется как уникальный. Приложение должно использовать элемент hwndFrom или idFrom структуры NMHDR (переданный в качестве параметра lParam ) для идентификации элемента управления.
-
lParam
-
Указатель на структуру NMHDR , содержащую код уведомления и дополнительные сведения. Для некоторых сообщений уведомлений этот параметр указывает на более крупную структуру, которая имеет структуру NMHDR в качестве первого элемента.
Возвращаемое значение
Возвращаемое значение игнорируется, за исключением сообщений с уведомлениями, в которые указано иное.
Комментарии
Назначением сообщения должен быть HWND родительского элемента управления. Это значение можно получить с помощью GetParent, как показано в следующем примере, где m_controlHwnd — это HWND самого элемента управления.
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);
Приложения обрабатывают сообщение в процедуре окна родительского окна, как показано в следующем примере, который обрабатывает сообщение уведомления, отправленное пользовательским элементом управления в предыдущем примере.
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;
}
Некоторые уведомления, в основном те, которые находятся в API в течение длительного времени, отправляются в виде WM_COMMAND сообщений. Дополнительные сведения см. в разделе Управление сообщениями.
Если обработчик сообщений находится в процедуре диалогового окна, необходимо использовать функцию SetWindowLong с DWL_MSGRESULT, чтобы задать возвращаемое значение.
В системах Windows Vista и более поздних версий сообщение WM_NOTIFY не может быть отправлено между процессами.
Многие уведомления доступны как в формате ANSI, так и в Юникоде. Окно, отправляющее WM_NOTIFY сообщение, использует WM_NOTIFYFORMAT сообщение, чтобы определить, какой формат следует использовать. Дополнительные сведения см. в разделе WM_NOTIFYFORMAT .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows Vista [только классические приложения] |
Минимальная версия сервера |
Windows Server 2003 [только классические приложения] |
Заголовок |
|