删除MFC单文档默认菜单栏的两种方法

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

作者:朱金灿
来源:http://blog.csdn.net/clever101/



      新建一个MFC单文档程序,默认都有四个菜单栏:文件、编辑、视图和帮助。怎么把这四个菜单栏删除掉呢?有两种方法:


第一种方法:重载框架类的Create函数,具体代码如下:


  1. BOOL CMainFrame::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle , const RECT& rect , CWnd* pParentWnd , LPCTSTR lpszMenuName , DWORD dwExStyle , CCreateContext* pContext)  
  2. {  
  3.     // TODO: 在此添加专用代码和/或调用基类  
  4. //  return CFrameWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, // //pParentWnd, lpszMenuName, dwExStyle, pContext);  
  5.      HMENU nIDorHMenu = NULL;  
  6.      return CFrameWnd::CreateEx(dwExStyle,lpszClassName,lpszWindowName,dwStyle,  
  7.          rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,  
  8.          pParentWnd->GetSafeHwnd(),  
  9.          nIDorHMenu,  
  10.          (LPVOID)pContext);  
  11. }  
BOOL CMainFrame::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle , const RECT& rect , CWnd* pParentWnd , LPCTSTR lpszMenuName , DWORD dwExStyle , CCreateContext* pContext){ // TODO: 在此添加专用代码和/或调用基类// return CFrameWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, // //pParentWnd, lpszMenuName, dwExStyle, pContext);     HMENU nIDorHMenu = NULL;  return CFrameWnd::CreateEx(dwExStyle,lpszClassName,lpszWindowName,dwStyle,   rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,   pParentWnd->GetSafeHwnd(),   nIDorHMenu,   (LPVOID)pContext);} 



第二种方法:手动删除所有菜单项。具体是先定义一个删除所有菜单项的函数:


  1. /*! 
  2. *  /brief 删除所有的菜单栏。 
  3. * 
  4. * 删除窗口的所有菜单栏。 
  5. *  /return 无。 
  6. */  
  7. static void DelAllMenu(HMENU hMenu)  
  8. {  
  9.     //  首先删除多余的菜单项  
  10.     int Menucount = GetMenuItemCount(hMenu);  
  11.     for (int i = Menucount-1;i>-1;i--)  
  12.     {  
  13.         ::DeleteMenu(hMenu,i, MF_BYPOSITION);  
  14.     }    
  15. }  
/*!*  /brief 删除所有的菜单栏。** 删除窗口的所有菜单栏。*  /return 无。*/static void DelAllMenu(HMENU hMenu){ //  首先删除多余的菜单项 int Menucount = GetMenuItemCount(hMenu); for (int i = Menucount-1;i>-1;i--) {  ::DeleteMenu(hMenu,i, MF_BYPOSITION); }  } 


 然后在框架类的OnCreate函数调用这个函数,具体如下:


  1. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)  
  2. {  
  3.     if (CFrameWnd::OnCreate(lpCreateStruct) == -1)  
  4.         return -1;  
  5.       
  6.     if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP  
  7.         | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||  
  8.         !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))  
  9.     {  
  10.         TRACE0("未能创建工具栏/n");  
  11.         return -1;      // 未能创建  
  12.     }  
  13.     if (!m_wndStatusBar.Create(this) ||  
  14.         !m_wndStatusBar.SetIndicators(indicators,  
  15.           sizeof(indicators)/sizeof(UINT)))  
  16.     {  
  17.         TRACE0("未能创建状态栏/n");  
  18.         return -1;      // 未能创建  
  19.     }  
  20.     // TODO: 如果不需要工具栏可停靠,则删除这三行  
  21.     m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);  
  22.     EnableDocking(CBRS_ALIGN_ANY);  
  23.     DockControlBar(&m_wndToolBar);  
  24.     // 获取窗口的菜单句柄  
  25.     CMenu *pMenu = GetMenu();  
  26.     if (NULL!=pMenu)  
  27.     {  
  28.         DelAllMenu(pMenu->GetSafeHmenu());  
  29.     }  
  30.     return 0;  
  31. }  
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CFrameWnd::OnCreate(lpCreateStruct) == -1)  return -1;  if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP  | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||  !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) {  TRACE0("未能创建工具栏/n");  return -1;      // 未能创建 } if (!m_wndStatusBar.Create(this) ||  !m_wndStatusBar.SetIndicators(indicators,    sizeof(indicators)/sizeof(UINT))) {  TRACE0("未能创建状态栏/n");  return -1;      // 未能创建 } // TODO: 如果不需要工具栏可停靠,则删除这三行 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); // 获取窗口的菜单句柄 CMenu *pMenu = GetMenu(); if (NULL!=pMenu) {        DelAllMenu(pMenu->GetSafeHmenu()); } return 0;} 












           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值