我在用VS2010做MFC单文档开发时,怎么将m_wndMenuBar中对应的菜单删掉,然后再重新加载进来啊。

在我的应用中需要这个实现过程。请大神帮帮忙。手里分不多,只能给这么多了。... 在我的应用中需要这个实现过程。请大神帮帮忙。手里分不多,只能给这么多了。 展开
 我来答
bhtzu
2014-10-23 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4072万
展开全部

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试试获取菜单指针,据说可以,没试过。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式