GetMenuState 函数 (winuser.h)
检索与指定菜单项关联的菜单标志。 如果菜单项打开子菜单,此函数还会返回子菜单中的项数。
注意GetMenuState 函数已被 GetMenuItemInfo 取代。 但是,如果不需要 GetMenuItemInfo 的任何扩展功能,仍然可以使用 GetMenuState。
语法
UINT GetMenuState(
[in] HMENU hMenu,
[in] UINT uId,
[in] UINT uFlags
);
参数
[in] hMenu
类型: HMENU
包含要检索其标志的菜单项的菜单的句柄。
[in] uId
类型: UINT
要检索其菜单标志的菜单项,由 uFlags 参数确定。
[in] uFlags
类型: UINT
指示如何解释 uId 参数。 此参数的取值可为下列值之一:
值 | 含义 |
---|---|
|
指示 uId 参数提供菜单项的标识符。 如果未指定MF_BYCOMMAND和MF_BYPOSITION标志,则MF_BYCOMMAND标志为默认值。 |
|
指示 uId 参数提供菜单项的从零开始的相对位置。 |
返回值
类型: UINT
如果指定的项不存在,则返回值为 -1。
如果菜单项打开子菜单,则返回值的低序字节包含与该项关联的菜单标志,而高序字节包含项打开的子菜单中的项数。
否则,返回值为菜单标志 (按位或) 掩码。 下面是与菜单项关联的菜单标志。
返回代码/值 | 说明 |
---|---|
|
检查标记放置在下拉菜单、子菜单和快捷菜单的项 (旁边,仅) 。 |
|
该项已禁用。 |
|
该项已禁用且灰显。 |
|
突出显示该项。 |
|
这与 MF_MENUBREAK 标志相同,但下拉菜单、子菜单和快捷菜单除外,其中新列与旧列用垂直线分隔。 |
|
该项放置在菜单栏) 的新行 (上,或放置在下拉菜单、子菜单和快捷菜单的新列 (中,) 不分隔列。 |
|
项由所有者绘制。 |
|
菜单项是一个子菜单。 |
|
下拉菜单、子菜单和快捷菜单的水平分隔线 (仅) 。 |
注解
可以测试项的标志值为 MF_ENABLED、 MF_STRING、 MF_UNCHECKED 或 MF_UNHILITE。 但是,由于这些值等于零,因此必须使用表达式来测试它们。
标志 | 要测试标志的表达式 |
---|---|
MF_ENABLED | ! (Flag&(MF_DISABLED | MF_GRAYED)) |
MF_STRING | ! (Flag&(MF_BITMAP | MF_OWNERDRAW)) |
MF_UNCHECKED | ! (Flag&MF_CHECKED) |
MF_UNHILITE | ! (Flag&HILITE) |
示例
有关示例,请参阅 在菜单中模拟复选框。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winuser.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |
API 集 | Windows 10版本 10.0.10 (240 中引入的 ext-ms-win-ntuser-menu-l1-1-2) |
请参阅
概念性
引用