VS2010中CMainFrame::OnCreate()函数里用GetMenu()无法获取菜单指针
Posted on 2011-12-11 21:28 骑驴过赵桥 阅读(2010) 评论(1) 编辑 收藏 举报今天学习VC++ 2010 MFC单文档应用程序中动态添加菜单,下面是代码部分:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { ...... CMenu m_Menu; m_Menu.CreatePopupMenu(); ASSERT(m_Menu.GetSafeHmenu()); GetMenu()->AppendMenuW(MF_POPUP,(UINT)m_Menu.m_hMenu,_T("文件")); m_Menu.AppendMenuW(MF_STRING,111,_T("新建")); m_Menu.AppendMenuW(MF_STRING,112,_T("打开")); m_Menu.Detach(); return 0; }
但是GetMenu()返回始终未NULL,无法获取菜单指针,网上查了下,说VS2010建的SDI/MDI与之前的不一样,是类似BCG的一些东西,所以用之前的方法GetMenu()得到CMenu是NULL或者无效。
【解决方案】
在CMainFrame类中找到CMFCMenuBar m_wndMenuBar;这个成员变量,将跟它相关的代码注释掉的话,然后运行,OK。