WM_COMMAND 消息

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

#define WM_COMMAND                      0x0111

参数

wParam

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

lParam

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

返回值

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

示例

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
控件 控件定义的通知代码 控制标识符 控制窗口的句柄

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

如果使用 MNS_NOTIFYBYPOSMENUINFO.dwStyle 值定义菜单,则发送 WM_MENUCOMMAND 而不是 WM_COMMAND

加速器

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

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

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Winuser.h(包括 Windows.h)

另请参阅

引用

HIWORD

LOWORD

Conceptual

菜单