zoukankan      html  css  js  c++  java
  • 删除MFC单文档默认菜单栏的两种方法

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

     

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

    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);
    }

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

    /*!
    *  /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函数调用这个函数,具体如下:

     

    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;
    }

    via:http://blog.csdn.net/clever101/article/details/5394535 

  • 相关阅读:
    48. Rotate Image
    47. Permutations II
    46. Permutations
    45. Jump Game II
    44. Wildcard Matching
    43. Multiply Strings
    42. Trapping Rain Water
    41. First Missing Positive
    40. Combination Sum II
    39. Combination Sum
  • 原文地址:https://www.cnblogs.com/youxin/p/2858126.html
Copyright © 2011-2022 走看看