Bootstrap

MFC菜单

OnUpdateUIState


CMenu::EnableMenuItem

启用,禁用或灰显菜单项。

UINT EnableMenuItem(
   UINT nIDEnableItem,
   UINT nEnable 
);
参数
nIDEnableItem

指定由将启用的,菜单项 nEnable。 此参数可指定弹出菜单项、标准菜单项。

nEnable

指定该操作。 它可以是 MF_DISABLED、 MF_ENABLED或 MF_GRAYED的组合,与 MF_BYCOMMAND 或 MF_BYPOSITION。 可以使用或运算符,这些值可以按位组合。 这些值的含义如下:

  • MF_BYCOMMAND 指定参数为现有菜单项的命令ID。 这是默认设置。

  • MF_BYPOSITION 指定参数为现有菜单项的位置。 第一项在位置0。

  • MF_DISABLED 禁用菜单项,使它不能选择,但不灰显它。

  • MF_ENABLED 启用菜单项,以便可以选择和还原从其灰显的状态。

  • MF_GRAYED 禁用菜单项,使它不能选择并灰显它。

返回值

以前的状态(MF_DISABLED、 MF_ENABLED或 MF_GRAYED)或– 1,则无效。

备注

CreateMenu、 InsertMenu、 ModifyMenu和 LoadMenuIndirect 成员函数还可以设置状态(启用,禁用或灰显)菜单项。

使用 MF_BYPOSITION 值需要一个应用程序使用正确的 CMenu。 如果使用菜单栏上的 CMenu,顶级菜单项(菜单栏上的项)受到影响。 通过位置若要设置一个项目或嵌套的弹出菜单的状态在弹出的,应用程序必须指定弹出菜单的 CMenu

在应用程序指定 MF_BYCOMMAND 标志时,Windows检查属于 CMenu的所有弹出菜单项;因此,除非,请重复菜单项使用菜单栏上的 CMenu 存在,就足够了。

示例

// The code fragment below shows how to disable (and gray out) the 
// File\New menu item.
// NOTE: m_bAutoMenuEnable is set to FALSE in the constructor of 
// CMainFrame so no ON_UPDATE_COMMAND_UI or ON_COMMAND handlers are 
// needed, and CMenu::EnableMenuItem() will work as expected.

CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(0);
submenu->EnableMenuItem(ID_FILE_NEW, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);

要求

Header: afxwin.h


;