WM_COMMAND消息

当用户从菜单中调用命令项、控件将通知消息发送到其父窗口或转换加速键时发送。

#define WM_COMMAND                      0x0111

参数

wParam

有关此参数的说明,请参阅“备注”。

lParam

有关此参数的说明,请参阅“备注”。

返回值

如果应用程序处理此消息,它应返回零。

Example

BOOL AboutDlg (
    HWND hDlg,
    UINT message,
    WPARAM wParam,
    LPARAM lParam)
{
    BOOL bRet = FALSE;

    switch (message)
    {
        case WM_INITDIALOG:
            bRet = TRUE;
            break;

        case WM_COMMAND:
            if (wParam == IDOK ||
                wParam == IDCANCEL)
            {
                EndDialog(hDlg, TRUE);
                bRet = TRUE;
            }
            break;
    }

    return bRet;
}

从 GitHub 上的 Windows 经典示例获取的示例

注解

此处汇总了 wParamlParam 参数的使用。

消息源 wParam (高字) wParam (低字) lParam
菜单 0 菜单标识符(IDM_*) 0
加速器 1 加速器标识符(IDM_*) 0
控件 控件定义的通知代码 控制标识符 控制窗口的句柄

在大多数情况下,这是用户在菜单中调用命令时要侦听的消息。 但是,如果使用 MENUINFO.dwStyle定义菜单MNS_NOTIFYBYPOS则发送WM_MENUCOMMAND 而不是 WM_COMMAND

如果应用程序启用菜单分隔符,则当用户选择分隔符时,系统会发送 一条WM_COMMAND 消息, 其中 wParam 参数的低字设置为零。

加速器

从窗口菜单中选择项的快捷键击将转换为 WM_SYSCOMMAND 消息。

如果在最小化拥有菜单的窗口时发生与菜单项对应的快捷键击,则不会发送 任何WM_COMMAND 消息。 但是,如果发生与窗口菜单或窗口菜单中任何项不匹配的加速键击,则即使窗口最小化,也会发送 WM_COMMAND 消息。

要求

Requirement 价值
支持的最低客户端
Windows 2000 Professional [仅限桌面应用]
支持的最低服务器
Windows 2000 Server [仅限桌面应用]
Header
Winuser.h (包括 Windows.h)

另请参阅

引用

HIWORD

LOWORD

概念

菜单