首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

在VS2008中 MFC编程使用GetMenu函数的有关问题

2012-12-20 
在VS2008中 MFC编程使用GetMenu函数的问题本帖最后由 hanyinlong 于 2010-05-01 21:39:50 编辑我是按照孙

在VS2008中 MFC编程使用GetMenu函数的问题
本帖最后由 hanyinlong 于 2010-05-01 21:39:50 编辑   我是按照孙鑫老师的VC++深入详解操作的,在执行GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION|MF_CHECKED)操作时出现错误,调试时提示:Menu.exe 中的 0x5d2a83ec (mfc90d.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000004 时发生访问冲突。
在网上查找答案看到也有人有相似问题并且也是使用的VS2008,在VC 6.0下就没有出现问题,这个应该怎么解决呀!
  希望大虾指教一下!(ps:我是在CMainFrame类中的 OnCreate函数中执行的)
[最优解释]
可能获取失败了


CMenu *pMenu = GetMenu()->GetSubMenu(0);
if(pMenu)
   pMenu->CheckMenuItem(..);
else
   MessageBox(..);

[其他解释]
::AfxGetApp()->m_pMainWnd->GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION
[其他解释]
二楼的方法也不行呀!!
怎么才能使GetMenu()函数获取成功呢?
[其他解释]
VS2008SP1后用的是MFCmenuBar,不是系统菜单
[其他解释]
MF_CHECKED);
[其他解释]
经过检测是GetMenu()获取失败了。但是为什么就不能获取呢?
在VC 6.0下面也没有错呀,怎么一放到VS2008中就出错呢?
[其他解释]
我也遇到这个问题。怎么没有人回答呢?
[其他解释]
在MSDN中关于CWnd::GetMenu()是这么说的:"This function should not be used for child windows because they do not have a menu."VS2008创建的SDI程序的菜单是属于CMainFrame的,
所以应该在CMainFrame的WM_CREATE消息响应函数中使用GetMenu函数!我的这么做后标记成功,不知道是不是这个原因,我觉得SetMenu不能使用也是这个原因....大家看看对不对

热点排行