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