GetMenu()->GetSubMenu(0)用法

warren258 2011-04-24 08:42:19
我在MainFrm.cpp 的oncreate末尾添加
GetMenu()->GetSubMenu(0)->CheckMenuItem(0, MF_BYPOSITION | MF_CHECKED);
程序一运行就出错(编译无错误,可运行 ,但是崩溃) 这个问题wgf4242发过贴,他解决后结了贴,不知道他是怎么解决的?求wgf4242发方法,也求其他大牛也来帮忙。
...全文
1039 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
grasshopperwarbler 2011-04-28
  • 打赏
  • 举报
回复
我之前也有相似的问题,后面发现是MenuBar的问题。也就是说,Menu不存在。

如果楼主用的是2008或2010的话,你可以看看这个链接,里面说了解决方法.
http://blog.csdn.net/grasshopperwarbler/archive/2011/04/21/6337754.aspx
warren258 2011-04-28
  • 打赏
  • 举报
回复
这个问题好像是跟2010有关。。。
warren258 2011-04-28
  • 打赏
  • 举报
回复
用的是vs2010,崩溃就是编译没错误,一执行(ctrl+f5)就是menu已停止工作,然后就是3个选项,一个联机检查;一个关闭程序;一个调试程序。
warren258 2011-04-28
  • 打赏
  • 举报
回复
谢谢16楼提供的页面,问题解决了。。。也谢谢各位大牛。结贴了。
向立天 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 warren258 的回复:]

不在oncreate中操作?postMessage一个消息,这样有区别吗?
[/Quote]当然有
在oncreate里有些东西可能没有准备好
postMessage的msg会排在消息队列里
等到执行他的时候窗口应该已经准备好了
maqiliang 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wang471981125 的回复:]
引用楼主 warren258 的回复:
我在MainFrm.cpp 的oncreate末尾添加
GetMenu()->GetSubMenu(0)->CheckMenuItem(0, MF_BYPOSITION | MF_CHECKED);
程序一运行就出错(编译无错误,可运行 ,但是崩溃) 这个问题wgf4242发过贴,他解决后结了贴,不知道他是怎么解决的?求wgf4242发方法,也求其他大……
[/Quote]
错误也贴出来
Wang471981125 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 warren258 的回复:]
我在MainFrm.cpp 的oncreate末尾添加
GetMenu()->GetSubMenu(0)->CheckMenuItem(0, MF_BYPOSITION | MF_CHECKED);
程序一运行就出错(编译无错误,可运行 ,但是崩溃) 这个问题wgf4242发过贴,他解决后结了贴,不知道他是怎么解决的?求wgf4242发方法,也求其他大牛也来帮忙。
[/Quote]
你所谓的崩溃是指?具体些
haogeai123 2011-04-26
  • 打赏
  • 举报
回复
你用的是vs2008 SP1以上版本的编译环境么??
warren258 2011-04-26
  • 打赏
  • 举报
回复
不在oncreate中操作?postMessage一个消息,这样有区别吗?
疯狂-的-蜗牛 2011-04-25
  • 打赏
  • 举报
回复
这样试试:GetMenu()->GetSubMenu(0)->CheckMenuIte(你的菜单项ID,MF_BYCOMMAND|MF_CHECKED);
走走刀口 2011-04-25
  • 打赏
  • 举报
回复
资源->Insert->选择Menu,然后随便加几个菜单项,这个应该是第0个菜单
warren258 2011-04-25
  • 打赏
  • 举报
回复
第0个菜单根本不存在? 不是都是从0开始的不?标准的mfc程序啊。
向立天 2011-04-25
  • 打赏
  • 举报
回复
不要在OnCreate里操作
在OnCreate里PostMessage一个消息
在这个消息执行这些代码试试
winning11xuhao 2011-04-25
  • 打赏
  • 举报
回复
CMenu* pMenu = GetMenu();
CMenu *pSubMenu = pMenu->GetSubMenu(0);
这个0是指你的子菜单是你菜单的第几个
warren258 2011-04-25
  • 打赏
  • 举报
回复
用开单id替换那个0,还是一样的啊。
xengine-qyt 2011-04-24
  • 打赏
  • 举报
回复
GetSubMenu(0) 你看看菜单 是不是第0个菜单 还是你第0个菜单根本不存在
快乐鹦鹉 2011-04-24
  • 打赏
  • 举报
回复
代码不要这么连着写。先GetMenu()得到返回值,看是否为空,再GetSubMenu(0),看返回是否为空

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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