我在用VS2010做MFC单文档开发时,怎么将m_wndMenuBar中对应的菜单删掉,然后再重新加载进来啊。
展开全部
MFC标准单文档程序的菜单,不需要“重新加载”,你只需要获取框架窗口(因为菜单是从属于框架的)指针,或者在CMainFrame类中直接:
//删除子菜单:
GetMenu()->DeleteMenu(1,MF_BYPOSITION);
//删除菜单项:
GetMenu()->GetSubMenu(0)->DeleteMenu(2,MF_BYPOSITION);
就可以实现删除了。
追问
这里的菜单是从属于CMFCMenuBar的吧,而且在VS2010的框架下面,直接调用GetMenu()将返回NULL的。你这个是在VC6.0下面的代码吧
追答
用VS2010创建的SDI窗口,在创建之初就可以选择是否使用CMFCMenuBar的。不使用的叫Classic Menu(属性不条勾)。
如果使用了CMFCMenuBar好像确实无法获取菜单句柄。解决办法:在CMainFrame类中找到CMFCMenuBar m_wndMenuBar;这个成员变量,将跟它相关的代码注释掉的话,然后运行,OK。
另外,可以尝试使用CMFCMenuBar的GetDefaultMenu或者GetHMenu试试获取菜单指针,据说可以,没试过。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询