当用户从菜单中调用命令项、控件将通知消息发送到其父窗口或转换加速键时发送。
#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 经典示例获取的示例 。
注解
此处汇总了 wParam 和 lParam 参数的使用。
| 消息源 | 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 |
|