Поделиться через


CMenu::GetMenuState

Возвращает состояние заданного пункта меню или число элементов в всплывающем меню.

UINT GetMenuState(
   UINT nID,
   UINT nFlags 
) const;

Параметры

  • nID
    Указывает идентификатор пункта меню, как определено nFlags.

  • nFlags
    Определяет природу nID.Он может иметь одно из следующих значений:

    • MF_BYCOMMAND Указывает, что параметр содержит идентификатор команды существующего пункта меню.Задано по умолчанию.

    • MF_BYPOSITION Указывает, что данный параметр предоставляет позицию существующего пункта меню.Первый элемент в позиции 0.

Возвращаемое значение

Значение 0xFFFFFFFF если указанный элемент не существует.Если nId задает контекстное меню меню, то смещение высок- order, содержащее количество элементов в всплывающем меню и младший байт, содержащий флаги меню, связанные с всплывающим меню.В противном случае возвращаемое значение маски (логическое ИЛИ) значения из следующего списка (эта маска, описывающая состояние пункта меню, nId определяет):

  • Выступает как связь с MF_UNCHECKED задает MF_CHECKED по умолчанию флажок рядом с элементом.Когда приложение передает растровые изображения галочки (см. функции-члена SetMenuItemBitmaps ), отображается "флажок" в растровом изображении.

  • MF_DISABLED Отключить пункт меню, чтобы он не могут быть выбраны, но не уменьшит яркость его.

  • MF_ENABLED включает пункт меню, чтобы он может выбирать и восстановления ее из своего уменьшен серого состояния.Обратите внимание, что значение этой константы равно 0; приложение не должно выполнять проверку на соответствие 0 сбоя при использовании этого значения.

  • MF_GRAYED Отключить пункт меню, чтобы он не может выбирать и снизит яркость его.

  • MF_MENUBARBREAK Задает элемент в новой линии в статических меню или в новом столбце в всплывающих меню.Новый столбец раскрывающегося меню будет отделен от старого столбца вертикальной линии раздела.

  • MF_MENUBREAK Задает элемент в новой линии в статических меню или в новом столбце в всплывающих меню.Никакие линии раздела между столбцами не предусмотрена.

  • MF_SEPARATOR Рисует горизонтальную линию раздела.Может быть использован только во всплывающем меню.Эта линия нельзя уменьшить яркость, отключение или выбрать.Другие параметры игнорируются.

  • Выступает как связь с MF_CHECKED удаляет MF_UNCHECKED флажок рядом с элементом.Когда приложение передает растровые изображения галочки (см. функции-члена 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