BOOL CMenu::GetMenuItemInfo( UINT nIDItem, LPMENUITEMINFO lpMenuItemInfo, BOOL ByPos = FALSE );
Возвращаемое значение
Если функция преуспевает, возвращаемое значение отлично от нуля. Если сбои функции возвращаемое значение - нуль. Чтобы получать расширенную информацию ошибки, используйте функцию Win32 GetLastError, как описано в Platform SDK.
Параметры
nIDItem
Идентификатор или позиция пункта меню для получения информации. Значение этого параметра зависит от значения ByPos.
lpMenuItemInfo
Указатель на MENUITEMINFO, как описано в Platform SDK, который содержит информацию относительно меню.
ByPos
Значение, определяющее значение nIDItem. По умолчанию, ByPos - FALSE, который указывает, что uItem - идентификатор пункта меню. Если ByPos не установлен к FALSE, это указывает позицию пункта меню.
Замечания
Эта функция осуществляет поведение функции Win32 GetMenuItemInfo, как описано в Platform SDK.
Обратите внимание, что в MFC реализации GetMenuItemInfo Вы не можете использовать дескриптор для меню.
Пример
// CMainFrame:: OnToggleTestMenuItem () - драйвер команды меню для
// "TEST" пунктa меню (чей идентификатор ресурса является ID_HELP_TEST). Это переключатели
// выбран или не выбран состояние пункта меню "Test".
// CMainFrame - класс унаследованный от CMainFrame.
void CMainFrame::OnToggleTestMenuItem()
{
// Получите всплывающее меню, которое содержит пункт меню "Test".
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(3);
// Проверить состояние пункта меню "Test". Включите пункт меню
// если он в настоящее время отключен. Иначе отключите выбор пункта меню
// если он в настоящее время включен.
MENUITEMINFO info;
info.cbSize = sizeof (MENUITEMINFO); // Должны заполнить это поле
info.fMask = MIIM_STATE; // Получите состояние пункта меню
VERIFY(submenu->GetMenuItemInfo(ID_HELP_TEST, &info));
if (info.fState & MF_CHECKED)
submenu->CheckMenuItem(ID_HELP_TEST, MF_UNCHECKED | MF_BYCOMMAND);
else
submenu->CheckMenuItem(ID_HELP_TEST, MF_CHECKED | MF_BYCOMMAND);
}