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

请参见

参考

CMenu选件类

层次结构图

GetMenuState

CMenu::CheckMenuItem

CMenu::EnableMenuItem