• <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
            <2011年8月>
            31123456
            78910111213
            14151617181920
            21222324252627
            28293031123
            45678910

            常用鏈接

            留言簿(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 風輕云淡 閱讀(1067) 評論(0)  編輯 收藏 引用 所屬分類: VC
            久久不见久久见免费视频7| 国产成人精品久久亚洲| 久久av高潮av无码av喷吹| 精品久久久无码人妻中文字幕豆芽| 日本久久中文字幕| 久久精品国产一区二区| 久久九九免费高清视频| 99久久99久久精品国产片果冻 | 午夜精品久久影院蜜桃| 国产精品免费看久久久香蕉| 狠狠色伊人久久精品综合网| 久久国产免费| 久久大香萑太香蕉av| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久久影院久久香蕉国产线看观看| 国产精品无码久久四虎| 久久久久亚洲精品无码网址| 亚洲国产日韩欧美久久| 久久人人爽人人人人爽AV| 久久久久久久波多野结衣高潮| 亚洲精品无码久久久久久| 久久久久人妻一区精品色| 91精品免费久久久久久久久| 久久久久国产一级毛片高清板| 久久影视国产亚洲| 狠狠色丁香久久婷婷综合五月 | 久久精品草草草| 亚洲国产成人久久一区WWW| 一本色道久久88精品综合| 久久最新精品国产| 久久久噜噜噜久久中文字幕色伊伊 | 四虎国产精品免费久久5151| 久久精品亚洲福利| 日产精品久久久久久久| 国产—久久香蕉国产线看观看 | 91久久精品无码一区二区毛片| 国产免费久久精品99re丫y| 久久精品国产亚洲网站| 97精品伊人久久大香线蕉| 国产精品99久久久久久人| 热久久国产欧美一区二区精品|