• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 132  文章 - 51  trackbacks - 0
            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(7)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            cocos2d-x

            OGRE

            OPenGL

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            在軟件開發過程中,有時會遇到應用程序要求具有全屏顯示功能。全屏顯示在Windows程序中,不同的工程類型,有不同的實現方法。實現的結果也不一樣,有真全屏和假全屏之分,真全屏是將要顯示的內容獨占顯示設備所有的全部資源,程序不加載窗外的框架。另一種是假全屏,實現的原理是調整要顯示的內容的尺寸與位置,使之正好充滿整個屏幕。假全屏的很好的例子就是如WordInternet Explorer的全屏顯示。

                    下面主要介紹一下在VC++6.0環境下,基于MFC的文檔/視圖框架應用程序的全屏顯示的實現方法。這是一種假全屏顯示。通過菜單控制全屏顯示,在全屏模式下按ESC鍵退出全屏顯示。


            首先,在你的文檔/視圖(這里建立單文檔視圖)應用程序中,找到CMainFrame類的聲明,在類內增加三個私有變量:
                WINDOWPLACEMENT                m_oldWndPlacement;            //原窗口位置
                BOOL                        bFullScreen;
                CRect                        m_rcFullScreen;                
            //表示全屏顯示時的窗口位置

            添加全屏狀態函數
            //-----------------------------------------------------------------------
            // 函數名    : CMainFrame::OnFullscreen
            // 說明      : 全屏狀態
            // 返回      : void 
            // 作者      : Teng
            // 創建時間  : 2009-5-31 13:48:54
            // 最后修改  : 2009-5-31
            //-----------------------------------------------------------------------
            void CMainFrame::OnFullscreen()
            {
                GetWindowPlacement( 
            &m_oldWndPlacement );                //獲得并保存當前窗口的位置
                CRect rcWindow;
                GetWindowRect( 
            &rcWindow );
                CRect rcClient;
                GetClientRect( 
            &rcClient );

                
            //重置視圖的所有控制條位置
                RepositionBars( 00xFFFF, AFX_IDW_PANE_FIRST, reposQuery, &rcClient );
                ClientToScreen( 
            &rcClient );

                
            //得到屏幕分辨率
                int nFullScreenW = GetSystemMetrics( SM_CXSCREEN );
                
            int nFullScreenH = GetSystemMetrics( SM_CYSCREEN );

                
            //將除控制條外的客戶區全屏顯示到從(0,0)到(nFullWidth, nFullHeight)區域, 
                
            //將(0,0)和(nFullWidth, nFullHeight)兩個點擴充原窗口和除控制條之外的客戶區位置間的差值,
                
            //就得到全屏顯示的窗口位置 
                m_rcFullScreen.left = rcWindow.left- rcClient.left ;
                m_rcFullScreen.top 
            = rcWindow.top - rcClient.top ;
                m_rcFullScreen.right 
            = rcWindow.right - rcClient.right + nFullScreenW;
                m_rcFullScreen.bottom 
            = rcWindow.bottom - rcClient.bottom + nFullScreenH;
                
                
            // 進入全屏顯示狀態 
                WINDOWPLACEMENT wp;
                wp.length 
            = sizeof(WINDOWPLACEMENT);
                wp.flags 
            = 0;
                wp.showCmd 
            = SW_SHOWNORMAL;
                wp.rcNormalPosition 
            = m_rcFullScreen;
                SetWindowPlacement( 
            &wp );
            }

            //接下來,通過ClassWizard重載CMainFrame類的OnGetMinMaxInfo函數,在全屏顯示時提供全屏顯示的位置信息
            void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
            {
                
            if  ( bFullScreen ){
                    lpMMI
            ->ptMaxSize.x = m_rcFullScreen.Width();
                    lpMMI
            ->ptMaxSize.y = m_rcFullScreen.Height();
                    lpMMI
            ->ptMaxPosition.x = m_rcFullScreen.Width();
                    lpMMI
            ->ptMaxPosition.y = m_rcFullScreen.Height();
                    lpMMI
            ->ptMaxTrackSize.x = m_rcFullScreen.Width(); 
                    lpMMI
            ->ptMaxTrackSize.y = m_rcFullScreen.Height();
                }

                
                CFrameWnd::OnGetMinMaxInfo(lpMMI);
            }
            //-----------------------------------------------------------------------
            // 函數名    : CMainFrame::changeFullScreen
            // 說明      : 改變屏幕當前狀態,全屏還是非全屏
            // 返回      : void 
            // 作者      : Teng
            // 創建時間  : 2009-5-31 13:25:07
            // 最后修改  : 2009-5-31
            //-----------------------------------------------------------------------
            void CMainFrame::changeFullScreen()
            {
                bFullScreen 
            = !bFullScreen;
                
            if ( bFullScreen ){
                    OnFullscreen();
                }
            else{
                    ShowWindow( SW_SHOWNORMAL );
                    SetWindowPlacement( 
            &m_oldWndPlacement );
                }

            }

            然后在view中添加控制開關
            void CFullScreenView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
            {
                
            if ( ( nChar == VK_RETURN ) && ::GetKeyState(VK_SHIFT) < 0  ){
                    TRACE(
            "Change state!\n");
                    CMainFrame
            * pWnd = (CMainFrame*)AfxGetMainWnd();
                    
            if ( pWnd ){
                        pWnd
            ->changeFullScreen();
                    }

                }

                CView::OnKeyDown(nChar, nRepCnt, nFlags);
            }

            FullScreen代碼下載
            posted on 2010-05-31 13:53 風輕云淡 閱讀(1073) 評論(0)  編輯 收藏 引用 所屬分類: VC
            无码伊人66久久大杳蕉网站谷歌| 嫩草伊人久久精品少妇AV| 国产亚洲精久久久久久无码AV| 久久精品视频91| 久久久久久夜精品精品免费啦| 99国内精品久久久久久久| 久久久久高潮综合影院| 日本免费一区二区久久人人澡| 亚洲一区精品伊人久久伊人| 久久精品天天中文字幕人妻| 亚洲午夜久久久| 久久精品国产只有精品66 | 精品久久久一二三区| 香蕉久久夜色精品国产小说| 一本一本久久A久久综合精品| 精品水蜜桃久久久久久久| 久久精品aⅴ无码中文字字幕重口| 亚洲精品99久久久久中文字幕| 久久国产精品99精品国产987| 日韩精品久久无码中文字幕| 久久婷婷色香五月综合激情| 国产亚洲精久久久久久无码AV| 久久久精品2019免费观看| 性高湖久久久久久久久| 久久精品aⅴ无码中文字字幕不卡| 国产高潮国产高潮久久久91 | 久久精品夜色噜噜亚洲A∨ | 蜜桃麻豆WWW久久囤产精品| 亚洲天堂久久精品| 久久99国产精品久久| 国产精品久久自在自线观看| 97久久国产亚洲精品超碰热 | 久久国产香蕉视频| 国产成人精品久久一区二区三区av| 久久精品无码专区免费东京热| 欧美亚洲国产精品久久久久| 久久精品免费全国观看国产| 中文字幕精品久久| 国产69精品久久久久9999APGF| 大香伊人久久精品一区二区| 一本色道久久88精品综合|