MFC动态修改菜单栏

想飞的笨猴 2015-07-24 11:03:55
我在MFC的主菜单栏里添加了【功能】菜单,下面有子菜单依次是【图片缩放】、【提点】。如下图:


我想实现的功能是点击【提点】自动的修改菜单栏,把【提点】变成【结束提点】。
参照先前网友博客和回复,我写了如下代码,编译运行均可以,但是就是没变化,求各位大神指点。以下两种方法均不可行。。
另外,还修改了MAINFRAME的构造函数,添加了
m_bAutoMenuEnable=FALSE;
方法一:
	GPointFlag=!GPointFlag;
BOOL MFlag=FALSE;
//---------------------方法一--------------------------------
CMenu *cMenu = new CMenu();
cMenu->LoadMenuA(IDR_MAINFRAME);//加载菜单,IDR_MAINFRAME是整个菜单资源的ID
CMenu *subMenu= cMenu->GetSubMenu(4); //【功能】对应菜单栏第5列,索引值为5,获得子菜单的句柄
MFlag=subMenu->ModifyMenuA(1, MF_BYPOSITION|MF_STRING,ID_GetPoint,"结束提点");
if (MFlag)
AfxMessageBox("菜单修改成功!");

方法二:

GPointFlag=!GPointFlag;
BOOL MFlag=FALSE;
//---------------------方法一--------------------------------
CMenu *cMenu = new CMenu();
cMenu->LoadMenuA(IDR_MAINFRAME);//加载菜单,IDR_MAINFRAME是整个菜单资源的ID
CMenu *subMenu= cMenu->GetSubMenu(4); //【功能】对应菜单栏第5列,索引值为5,获得子菜单的句柄
MFlag=subMenu->ModifyMenuA(ID_GetPoint, MF_BYCOMMAND|MF_STRING,ID_GetPoint,"结束提点");
if (MFlag)
AfxMessageBox("菜单修改成功!");


这两种方法均没有变化。求大神指点。。。。
...全文
479 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bob76012 2015-07-25
  • 打赏
  • 举报
回复
你不能在用一个新的new Cmenu 你要把当初

SetMenu(&menu);
menu给直接继续使用

menu.ModifyMenuA(ID_GetPoint,  MF_BYCOMMAND|MF_STRING, ID_GetPoint, "结束提点");
赵4老师 2015-07-24
  • 打赏
  • 举报
回复
MSDN98_1.ISO http://pan.baidu.com/s/1dDF41ix, MSDN98_2.ISO http://pan.baidu.com/s/1bnGo0Vl 先下载安装MSDN98 然后参考其中动态修改菜单的例子代码。
sdghchj 2015-07-24
  • 打赏
  • 举报
回复
很明显,你修改的对象不对,你所修改的是CMenu *cMenu = new CMenu(); 而界面上显示的MainFrame框架上的另一个CMenu对象。虽然两个对象都加载了同一个IDR_MAINFRAME资源模板,但依旧是两个不相干的对象。 你需要通过全局的CMainFrame对象指针得到其中的CMenu对象指针来修改才行。
赵4老师 2015-07-24
  • 打赏
  • 举报
回复
有时候,越老的例子代码越靠谱。
想飞的笨猴 2015-07-24
  • 打赏
  • 举报
回复
我运行时,函数返回值时TRUE,也会弹出程序中 的“”菜单修改成功!“对话框,但菜单栏中的子菜单显示的文字仍然没有改变
想飞的笨猴 2015-07-24
  • 打赏
  • 举报
回复
感谢您的回复。 你给我的MSDN链接好像是比较早的版本的,VC6的吧,我用MDSN在线帮助有查找了ModifyMenu()函数和之前的一些例子, 还是没有解决,可能我比较笨吧

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧