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

在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不能使用也是这个原因....大家看看对不对