WM_MENUSELECT消息

当用户选择菜单项时发送到菜单的所有者窗口。

#define WM_MENUSELECT                   0x011F

参数

wParam

低序单词指定菜单项或子菜单索引。 如果所选项是命令项,则此参数包含菜单项的标识符。 如果所选项打开下拉菜单或子菜单,则此参数包含主菜单中下拉菜单或子菜单的索引, lParam 参数包含主菜单的句柄;使用 GetSubMenu 函数获取下拉菜单或子菜单的菜单句柄。

高序单词指定一个或多个菜单标志。 此参数可以是以下一个或多个值。

价值 Meaning
MF_BITMAP
0x00000004L
项显示位图。
MF_CHECKED
0x00000008L
已选中项目。
MF_DISABLED
0x00000002L
项目已禁用。
MF_GRAYED
0x00000001L
项为灰色。
MF_HILITE
0x00000080L
突出显示了项。
MF_MOUSESELECT
0x00008000L
使用鼠标选择项。
MF_OWNERDRAW
0x00000100L
项是所有者绘制的项。
MF_POPUP
0x00000010L
项将打开下拉菜单或子菜单。
MF_SYSMENU
0x00002000L
项包含在窗口菜单中。 lParam 参数包含与消息关联的菜单的句柄。

lParam

主菜单的句柄。

返回值

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

注解

当用户在打开的菜单中选择菜单项(通常通过鼠标悬停或键盘导航)时,此消息将发送到菜单的所有者窗口。 如果菜单已关闭,则当用户将鼠标移到顶级菜单项上时,不会发送此消息。 仅当用户单击顶级菜单项或按 Alt 键打开菜单后,才会发送此消息。

重要

当用户单击菜单项或按 Enter 调用所选菜单项时,WM_COMMAND或WM_MENUCOMMAND消息发送到窗口,具体取决于菜单 MENUINFO 结构的 dwStyle 成员的值。 调用所选命令时,使用这些消息执行作。

如果 wParam 的高阶单词包含0xFFFF且 lParam 参数包含 NULL,则系统已关闭菜单。

不要将值 -1 用于 wParam 的高阶单词,因为此值被指定为 (UINTHIWORDwParam)。 尽管0xFFFF可能在签名上下文中解释为 -1,但如果值0xFFFF,则该值将解释为0x0000FFFF,而不是 -1,因为强制转换为 UINT

例如,此代码检查0xFFFF,而不是 -1:

case WM_MENUSELECT:
{
    UINT menuItem = LOWORD(wParam);
    UINT flags = HIWORD(wParam);
    HMENU hMenu = (HMENU)lParam;

    // Check for 0xFFFF, not -1.
    if (flags == 0xFFFF && hMenu == NULL) {
        // No menu item selected (menu closed).
        // ...
    }
    break;
}

要求

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

另请参阅

引用

GetSubMenu

HIWORD

LOWORD

概念

键盘加速器