WM_NOTIFY 消息

当事件发生或控件需要一些信息时,由公共控件发送到其父窗口。

参数

wParam

发送消息的公共控件的标识符。 不保证此标识符是唯一的。 应用程序应使用 NMHDR 结构的 hwndFromidFrom 成员 (作为 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 和 Unicode 格式提供。 发送 WM_NOTIFY 消息的窗口使用 WM_NOTIFYFORMAT 消息来确定应使用哪种格式。 有关进一步的讨论 ,请参阅WM_NOTIFYFORMAT

要求

要求
最低受支持的客户端
Windows Vista [仅限桌面应用]
最低受支持的服务器
Windows Server 2003 [仅限桌面应用]
标头
Winuser.h

另请参阅

WM_NOTIFYFORMAT