WM_NOTIFY - сообщение

Отправляется общим элементом управления в родительское окно, когда произошло событие или элемент управления требует некоторых сведений.

Параметры

wParam

Идентификатор общего элемента управления, отправляющего сообщение. Этот идентификатор не гарантируется уникальным. Приложение должно использовать элемент hwndFrom или idFrom структуры NMHDR (переданный в качестве параметра lParam ) для идентификации элемента управления.

lParam

Указатель на структуру NMHDR , содержащую код уведомления и дополнительные сведения. Для некоторых сообщений уведомлений этот параметр указывает на большую структуру, которая имеет структуру NMHDR в качестве первого элемента.

Возвращаемое значение

Возвращаемое значение игнорируется, за исключением сообщений с уведомлениями, которые указывают в противном случае.

Remarks

Назначение сообщения должно быть 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 [только классические приложения]
Header
Winuser.h

См. также раздел

WM_NOTIFYFORMAT