_Уведомить сообщение WM

Посылается обычным элементом управления в его родительское окно, когда произошло событие или для элемента управления требуются некоторые сведения.

Параметры

wParam

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

lParam

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

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

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

Комментарии

Место назначения сообщения должно быть HWND родительского элемента управления. Это значение можно получить с помощью функции- родителя, как показано в следующем примере, где m _ контролхвнд — это 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 . Дополнительные сведения см. в разделе Управление сообщениями.

Если обработчик сообщений находится в процедуре диалогового окна, необходимо использовать функцию SetWindowLong с DWL _ мсгресулт, чтобы задать возвращаемое значение.

для Windows Vista и более поздних систем сообщение WM _ NOTIFY не может быть отправлено между процессами.

Многие уведомления доступны в форматах ANSI и Юникод. Окно, отправляющее сообщение WM _ Notify , использует сообщение WM _ нотифиформат для определения формата, который следует использовать. Дополнительные сведения см. в разделе WM _ нотифиформат .

Требования

Требование Значение
Минимальная версия клиента
Windows [Только классические приложения Vista]
Минимальная версия сервера
Windows Только для [ настольных приложений сервера 2003]
Заголовок
Winuser. h

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

WM _ нотифиформат