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