按照msdn中的demo已无法生效:
// Get the popup menu which contains the "Test" menu item.
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(3);
// Check the state of the "Test" 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_HELP_TEST, MF_BYCOMMAND);
ASSERT(state != 0xFFFFFFFF);
if (state & MF_CHECKED)
submenu->CheckMenuItem(ID_HELP_TEST, MF_UNCHECKED | MF_BYCOMMAND);
else
submenu->CheckMenuItem(ID_HELP_TEST, MF_CHECKED | MF_BYCOMMAND);
并且调用GetMenu()->GetSubMenu()也会引发异常。
获取菜单可采用如下方式:
CMenu menu;
menu.LoadMenuA(IDR_MAINFRAME);
CMenu *pSubmenu = menu.GetSubMenu(2);
if (NULL == pSubmenu)
return;
如若在菜单项前显示标记复选框,在类视图中,找到对应的类比如CTestView->属性->找到Events->找到对应的菜单ID,展开后添加UPDATE_COMMAND_UI响应函数。
在响应函数中调用pCmdUI->SetCheck(0/1);用于控制标记显示与否。