vc++新手问题!对vs2010和vc6.0区别懂得进 10

今天在学习孙鑫vc++,出现了莫名奇怪的问题,intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){////////... 今天在学习孙鑫vc++,出现了莫名奇怪的问题,
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
/////////////////
GetMenu()->GetSubMenu(0)->EnableMenuItem(0,MF_BYPOSITION|MF_CHECKED);
return 0;
}
这段代码是给一个窗口的第一个子菜单下的第一个菜单项标记√。可是我调试时出现了这个问题:菜单.exe 中的 0x5115a12c (mfc100ud.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x00000004 时发生访问冲突。这把我弄懵了,望大神们替我解决啊!万分感激!
忘了,我用的是vs2010,孙鑫用的是vc6.0
展开
 我来答
denytrans
2012-01-28 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:104
采纳率:0%
帮助的人:89.5万
展开全部
由于OnCreate一般是在创建窗口的时候用的,你在调用GetMenu()->GetSubMenu(0)->EnableMenuItem(0,MF_BYPOSITION|MF_CHECKED);的时候,菜单对象还没有被创建。所以,在此设定菜单项的选定状态并不妥(由于菜单对象的指针为NULL)。
最妥的实现方式是:
ON_COMMAND(ID_VIEW_TASKPANE, &CMainFrame::OnViewTaskpane)

void CMainFrame::OnUpdateViewTaskpane(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck( m_wndTaskPane.IsVisible() );
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
甫哲妍5r
2012-01-27 · TA获得超过192个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:154万
展开全部
代码本身没什么问题 代码重新生成下 或者把DEBUG文件夹删掉重新生成试试看 这个跟VS VC6.0没什么关系
GetMenu()->GetSubMenu(0)->CheckMenuItem(1,MF_BYPOSITION|MF_CHECKED); //选中菜单
GetMenu()->GetSubMenu(0)->SetDefaultItem(1,MF_BYPOSITION); //默认菜单
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1fda83a
2012-01-27 · 超过16用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:41.7万
展开全部
你可以查看堆栈(视图窗口中有堆栈窗口) 来看看代码停留在哪个函数里面比如是停留在 GetMenu() 中 还是 GetSubMenu(0) 中.
根据经验你这个可能是 GetMenu()->GetSubMenu(0) 返回的数据是 NULL ,也就是没有子菜单,但是你没有检查 就去EnableMenuItem 了
追问
我看了堆栈,第一行是“mfc100ud.dll!CMenu::GetSubMenu(int nPos)  行 958 + 0xc 字节”,并且黄箭头指在afxwin1.inl文件的_“AFXWIN_INLINE CMenu* CMenu::GetSubMenu(int nPos) const
{ ASSERT(::IsMenu(m_hMenu)); return CMenu::FromHandle(::GetSubMenu(m_hMenu, nPos)); }”
刚学vc,真是弄不明白这些,请大虾在详细点告诉我,我该怎么改代码,才能不出错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cmlasrykq
2012-01-27
知道答主
回答量:7
采纳率:0%
帮助的人:3.3万
展开全部
楼上说的是,你的菜单设计有问题,这个错误表示函数没有找到你想找的子菜单,你可以在加一层子菜单试试,我说的没错的话这个错误就不会出现了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式