CMenu::GetMenuState
返回指定的菜单项的状态或项的数目在弹出菜单中的。
UINT GetMenuState(
UINT nID,
UINT nFlags
) const;
参数
nID
指定菜单项ID,由 nFlags。nFlags
指定 nID的性质。 它可以是下列值之一:MF_BYCOMMAND 指定参数为现有菜单项的命令ID。 这是默认设置。
MF_BYPOSITION 指定参数为现有菜单项的位置。 第一项在位置0。
返回值
值0xFFFFFFFF,如果指定的项目不存在。 如果 nId 标识一个弹出菜单,高位字节在弹出菜单包含项的数目,并且低位字节包含菜单标志与弹出菜单。 否则返回值是屏蔽(布尔值或)从以下值" (此掩码描述 nId 标识)菜单项的状态:
MF_CHECKED 为与 MF_UNCHECKED 的触发器在项目旁边将默认选中标记。 当应用程序提供复选标记位图(请参见 SetMenuItemBitmaps 成员函数),在”位图的“复选标记将显示。
MF_DISABLED 禁用菜单项,使它不能选择,但不灰显它。
MF_ENABLED 启用菜单项,以便可以选择和还原从其灰显的状态。 注意该常数的值为0;,在使用此值时,应用程序不应测试0失败的。
MF_GRAYED 禁用菜单项,使它不能选择并灰显它。
MF_MENUBARBREAK 在新行将该项目在静态菜单上或新列在弹出菜单。 新的弹出菜单列从旧列将用竖的分隔线。
MF_MENUBREAK 在新行将该项目在静态菜单上或新列在弹出菜单。 分隔线不放置在列之间。
MF_SEPARATOR 绘制一条的分隔线。 只能在弹出菜单。 此行不能为灰色,禁用或显示。 其他参数将被忽略。
MF_UNCHECKED 为与 MF_CHECKED 的触发器在项目中移除旁边的复选标记。 当应用程序提供复选标记位图(请参见 SetMenuItemBitmaps 成员函数),“复选标记为”显示位图。 注意该常数的值为0;,在使用此值时,应用程序不应测试0失败的。
示例
// CMainFrame::OnToggleTestMenuState() is a menu command handler for
// "Toggle State" menu item (whose resource id is ID_MENU_TOGGLESTATE).
// It toggles the checked or unchecked state of the "Toggle State" menu item.
// CMainFrame is a CFrameWnd-derived class.
void CMainFrame::OnToggleTestMenuState()
{
// Get the popup menu which contains the "Toggle State" menu item.
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(4);
// Check the state of the "Toggle State" menu item. Check the menu item
// if it is currently unchecked. Otherwise, uncheck the menu item
// if it is not currently checked.
UINT state = submenu->GetMenuState(ID_MENU_TOGGLESTATE, MF_BYCOMMAND);
ASSERT(state != 0xFFFFFFFF);
if (state & MF_CHECKED)
submenu->CheckMenuItem(ID_MENU_TOGGLESTATE, MF_UNCHECKED | MF_BYCOMMAND);
else
submenu->CheckMenuItem(ID_MENU_TOGGLESTATE, MF_CHECKED | MF_BYCOMMAND);
}
要求
Header: afxwin.h