EnableMenuItem 函数 (winuser.h)

启用、禁用或灰显指定的菜单项。

语法

BOOL EnableMenuItem(
  [in] HMENU hMenu,
  [in] UINT  uIDEnableItem,
  [in] UINT  uEnable
);

参数

[in] hMenu

类型: HMENU

菜单的句柄。

[in] uIDEnableItem

类型: UINT

要启用、禁用或灰显的菜单项,由 uEnable 参数确定。 此参数指定菜单栏、菜单或子菜单中的项。

[in] uEnable

类型: UINT

控制 uIDEnableItem 参数的解释,并指示菜单项是启用、禁用还是灰显。 此参数必须是以下值的组合。

含义
MF_BYCOMMAND
0x00000000L
指示 uIDEnableItem 提供菜单项的标识符。 如果 MF_BYCOMMANDMF_BYPOSITION 标志均未指定, 则MF_BYCOMMAND 标志为默认标志。
MF_BYPOSITION
0x00000400L
指示 uIDEnableItem 提供菜单项的从零开始的相对位置。
MF_DISABLED
0x00000002L
指示菜单项已禁用,但不灰显,因此无法选择它。
MF_ENABLED
0x00000000L
指示菜单项已启用并从灰显状态还原,以便可以选择它。
MF_GRAYED
0x00000001L
指示菜单项已禁用且灰显,因此无法选中。

返回值

类型: BOOL

返回值指定菜单项的上一个状态, (它是 MF_DISABLEDMF_ENABLEDMF_GRAYED) 。 如果菜单项不存在,则返回值为 -1。

注解

应用程序必须使用 MF_BYPOSITION 标志来指定正确的菜单句柄。 如果指定了菜单栏的菜单句柄,则顶级菜单项 (菜单栏中的某个项) 受影响。 若要按位置设置下拉菜单或子菜单中项的状态,应用程序必须指定下拉菜单或子菜单的句柄。

当应用程序指定 MF_BYCOMMAND 标志时,系统会检查在指定菜单句柄标识的菜单中打开子菜单的所有项。 因此,除非存在重复的菜单项,否则指定菜单栏的菜单句柄就足够了。

InsertMenuInsertMenuItemLoadMenuIndirectModifyMenuSetMenuItemInfo 函数还可以设置菜单项的状态 (启用、禁用或灰色) 。

更改窗口菜单时,菜单栏不会立即更新。 若要强制更新,请调用 DrawMenuBar

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll
API 集 在 Windows 8) 中引入 ext-ms-win-ntuser-menu-l1-1-0 (

请参阅

概念性

DrawMenuBar

GetMenuItemID

InsertMenu

InsertMenuItem

LoadMenuIndirect

菜单

ModifyMenu

引用

SetMenuItemInfo

WM_SYSCOMMAND