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 经典示例获取的示例。
注解
此处汇总了 wParam 和 lParam 参数的使用。
消息源 | wParam(高字) | wParam(低字) | lParam |
---|---|---|---|
菜单 | 0 | 菜单标识符 (IDM_*) | 0 |
加速器 | 1 | 加速器标识符 (IDM_*) | 0 |
控件 | 控件定义的通知代码 | 控制标识符 | 控制窗口的句柄 |
菜单
如果应用程序启用菜单分隔符,系统会在用户选择分隔符时发送 WM_COMMAND 消息,其中 wParam 参数的低字设置为零。
如果使用 MNS_NOTIFYBYPOS 的 MENUINFO.dwStyle 值定义菜单,则发送 WM_MENUCOMMAND 而不是 WM_COMMAND。
加速器
从窗口菜单中选择项的加速器击键将转换为 WM_SYSCOMMAND 消息。
如果在拥有菜单的窗口最小化时发生与菜单项对应的加速器击键,则不会发送任何 WM_COMMAND 消息。 但是,如果发生与窗口菜单或窗口菜单中任何项不匹配的加速器击键,则即使窗口最小化,也会发送 WM_COMMAND 消息。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 |
Windows 2000 Server [仅限桌面应用] |
标头 |
|