首页 > 其他 > 详细

MFC VS2010、VS2012中GetMenu()问题解决(续)

时间:2014-03-06 14:23:58      阅读:686      评论:0      收藏:0      [点我收藏+]

问题:GetMenu函数没有返回菜单栏指针,编程环境是visual studio 2010.(在VC6.0没有这问题)


我用MFC新建的工程,在CMainFrame类的OnCreate函数添加如下代码:
GetMenu()->GetSubMenu(0)->CheckMenuItem(ID_FILE_NEW,MF_BYCOMMAND | MF_CHECKED);
编译正确,但是调试的时候出现ASSERT错误。错误在下面这个函数(指向函数体一行)
_AFXWIN_INLINE CMenu* CMenu::GetSubMenu(int nPos) const
{ ASSERT(::IsMenu(m_hMenu)); return CMenu::FromHandle(::GetSubMenu(m_hMenu, nPos)); }

由错误可以推断GetMenu函数没有返回菜单栏指针,通过跟踪GetMenu的返回值,m_hMenu的值:错误没有找到符号"".

解决方法一:

要改变某个非顶级菜单时,添加ON_UPDATE_COMMAND_UI()消息处理,比如:

bubuko.com,布布扣

例如:

void CMainFrame::OnUpdateTestHwl(CCmdUI *pCmdUI)
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(FALSE);
}

方法2:

解决的办法就是:在新建项目---MFC应用程序向导过程中的“用户界面功能”---命令栏(菜单/工具栏/功能区)---选择“使用经典菜单(S)”

MFC VS2010、VS2012中GetMenu()问题解决(续),布布扣,bubuko.com

MFC VS2010、VS2012中GetMenu()问题解决(续)

原文:http://blog.csdn.net/h_wlyfw/article/details/20529499

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!