• <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
            <2012年3月>
            26272829123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(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 風輕云淡 閱讀(1060) 評論(0)  編輯 收藏 引用 所屬分類: VC
            2021国内精品久久久久久影院| 久久久亚洲欧洲日产国码aⅴ| 国产精品99久久精品| 国产韩国精品一区二区三区久久| 国产精品福利一区二区久久| 国产激情久久久久影院老熟女免费| 青草久久久国产线免观| 亚洲午夜久久久久久久久电影网| 好属妞这里只有精品久久| 伊人久久五月天| 99久久免费国产精品热| 一本一本久久a久久精品综合麻豆| 国产精品免费看久久久| 亚洲精品无码久久久| 精品午夜久久福利大片| 久久国产色av免费看| 成人国内精品久久久久影院VR| 无码人妻久久一区二区三区| 99久久婷婷国产综合精品草原 | 久久国产精品偷99| 久久天天躁狠狠躁夜夜2020一| 久久se精品一区二区影院| 无码人妻精品一区二区三区久久| 国产精品成人精品久久久| 国产精品青草久久久久婷婷| 久久九九兔免费精品6| 四虎久久影院| 久久综合久久综合亚洲| 久久久久亚洲精品天堂久久久久久| 久久精品成人免费看| 色欲久久久天天天综合网| 亚洲AV无码久久精品狠狠爱浪潮| 亚洲伊人久久综合影院| yy6080久久| 中文精品久久久久人妻不卡| 久久久久久久久久久精品尤物| 色综合久久夜色精品国产| 国产69精品久久久久观看软件| 久久综合鬼色88久久精品综合自在自线噜噜 | 91麻豆国产精品91久久久| 一本久久精品一区二区|