删除MFC中的菜单

Viv*_*mar 7 mfc visual-c++

在MFC中如何删除POPUP类型的菜单项.RemoveMenu()要么采取ID或位置.由于POPUP菜单没有ID,左边的选项是使用位置.

但我没有得到我可以调用RemoveMenu()的方式和地点.

File  Edit  Test
            Test_submenu_1
            Test_submenu_2
            Test_submenu_3 > submenu_3_item_1
            Test_submenu_4
            Test_submenu_5

我想删除Test_submenu_3?我没有得到如何找到测试的CMenu对象,以便我可以通过传递submenu_3_item_1的位置"2"来调用RemoveMenu().

任何有关这样做的建议将不胜感激.

谢谢!

Joh*_*nCz 7

你不能使用LoadMenu,因为这个功能就是这样.

修改加载的菜单后,当用于加载它的菜单对象超出范围时,它将被终止.您必须修改当前使用的菜单.

您的菜单是主菜单的弹出部分,位置第二.它包含5个项目,第二个是另一个弹出窗口.据我了解,您想要删除此项目并弹出此项目.要使其工作,您将不得不向主窗口询问当前菜单:

CMenu* pMenu = GetMenu(); // get the main menu
CMenu* pPopupMenu = pMenu->GetSubMenu(2);//(Test menu with item....)
pPopupMenu->RemoveMenu(2, MF_BYPOSITION);
Run Code Online (Sandbox Code Playgroud)

当然,这段代码来自主框架.如果要在其他地方使用它,则必须使用指向主框架的指针访问所有内容.