VC++全屏


Win32類型的全屏代碼:

1. 去掉menu

ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);

    wcex.style            = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra        = 0;
    wcex.cbWndExtra        = 0;
    wcex.hInstance        = hInstance;
    wcex.hIcon            = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_W32));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName    = NULL;//MAKEINTRESOURCE(IDC_W32); 這個是修改過的
    wcex.lpszClassName    = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

    return RegisterClassEx(&wcex);
}

2. 改變window bar以及寬高屬性

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // 將實例句柄存儲在全局變量中

   hWnd = CreateWindow(szWindowClass, szTitle, WS_POPUP/*WS_OVERLAPPEDWINDOW*/,
      CW_USEDEFAULT, 0, ::GetSystemMetrics(SM_CXSCREEN)/*CW_USEDEFAULT*/, ::GetSystemMetrics(SM_CYSCREEN)/*0*/, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

運行,搞定(alt+f4退出)。

 

MFC SDI類型的全屏代碼:

1. 在MainFrame中更改窗口樣式,去掉window bar的顯示

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    if( !CFrameWndEx::PreCreateWindow(cs) )
        return FALSE;
    // TODO: 在此處通過修改
    //  CREATESTRUCT cs 來修改窗口類或樣式
    cs.style=WS_POPUPWINDOW;  //增加這句
cs.hMenu=NULL; //去掉菜單
return TRUE; }

2. 在App.cpp代碼中修改窗口顯示為最大化

m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED/*SW_SHOW*/);

3. 在CMainFrame::OnCreate中注釋掉所有與menu, toolbar, statusbar相關的代碼,如下:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CFrameWndEx::OnCreate(lpCreateStruct) == -1)
        return -1;

    BOOL bNameValid;
    // 基於持久值設置視覺管理器和樣式
    OnApplicationLook(theApp.m_nAppLook);

    //if (!m_wndMenuBar.Create(this))
    //{
    //    TRACE0("未能創建菜單欄\n");
    //    return -1;      // 未能創建
    //}

    //m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY);

    //// 防止菜單欄在激活時獲得焦點
    //CMFCPopupMenu::SetForceMenuFocus(FALSE);

    //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(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))
    //{
    //    TRACE0("未能創建工具欄\n");
    //    return -1;      // 未能創建
    //}

    /*CString strToolBarName;
    bNameValid = strToolBarName.LoadString(IDS_TOOLBAR_STANDARD);
    ASSERT(bNameValid);
    m_wndToolBar.SetWindowText(strToolBarName);

    CString strCustomize;
    bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);
    ASSERT(bNameValid);
    m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);*/

    // 允許用戶定義的工具欄操作:
    //InitUserToolbars(NULL, uiFirstUserToolBarId, uiLastUserToolBarId);

    //if (!m_wndStatusBar.Create(this))
    //{
    //    TRACE0("未能創建狀態欄\n");
    //    return -1;      // 未能創建
    //}
    //m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));

    // TODO: 如果您不希望工具欄和菜單欄可停靠,請刪除這五行
    
    /*m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockPane(&m_wndMenuBar);
    DockPane(&m_wndToolBar);*/


    // 啟用 Visual Studio 2005 樣式停靠窗口行為
    //CDockingManager::SetDockingMode(DT_SMART);
    // 啟用 Visual Studio 2005 樣式停靠窗口自動隱藏行為
    //EnableAutoHidePanes(CBRS_ALIGN_ANY);

    // 啟用工具欄和停靠窗口菜單替換
    //EnablePaneMenu(TRUE, ID_VIEW_CUSTOMIZE, strCustomize, ID_VIEW_TOOLBAR);

    // 啟用快速(按住 Alt 拖動)工具欄自定義
    //CMFCToolBar::EnableQuickCustomization();

    if (CMFCToolBar::GetUserImages() == NULL)
    {
        // 加載用戶定義的工具欄圖像
        if (m_UserImages.Load(_T(".\\UserImages.bmp")))
        {
            CMFCToolBar::SetUserImages(&m_UserImages);
        }
    }

    // 啟用菜單個性化(最近使用的命令)
    // TODO: 定義您自己的基本命令,確保每個下拉菜單至少有一個基本命令。
    CList<UINT, UINT> lstBasicCommands;

    lstBasicCommands.AddTail(ID_FILE_NEW);
    lstBasicCommands.AddTail(ID_FILE_OPEN);
    lstBasicCommands.AddTail(ID_FILE_SAVE);
    lstBasicCommands.AddTail(ID_FILE_PRINT);
    lstBasicCommands.AddTail(ID_APP_EXIT);
    lstBasicCommands.AddTail(ID_EDIT_CUT);
    lstBasicCommands.AddTail(ID_EDIT_PASTE);
    lstBasicCommands.AddTail(ID_EDIT_UNDO);
    lstBasicCommands.AddTail(ID_APP_ABOUT);
    lstBasicCommands.AddTail(ID_VIEW_STATUS_BAR);
    lstBasicCommands.AddTail(ID_VIEW_TOOLBAR);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2003);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_VS_2005);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLUE);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_SILVER);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLACK);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_AQUA);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_WINDOWS_7);

    CMFCToolBar::SetBasicCommands(lstBasicCommands);
    
    return 0;
}

4. 在相應的View中去掉鼠標右鍵快捷菜單事件關聯

好了,搞定(alt+f4退出)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM