• <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
            国产激情久久久久影院老熟女| 嫩草影院久久99| 久久精品极品盛宴观看| 久久综合亚洲鲁鲁五月天| 久久99国产精品尤物| 99久久婷婷国产一区二区| 看全色黄大色大片免费久久久| 国产A级毛片久久久精品毛片| a级成人毛片久久| 少妇无套内谢久久久久| 亚洲国产二区三区久久| 国内精品综合久久久40p| 久久av高潮av无码av喷吹| 亚洲国产精品综合久久网络 | 亚洲国产二区三区久久| 久久丝袜精品中文字幕| 国产成人无码久久久精品一| 久久精品国产亚洲5555| 久久777国产线看观看精品| 精品一二三区久久aaa片| 久久国产精品波多野结衣AV| 亚洲中文字幕久久精品无码喷水 | 国产精品成人久久久| 热久久这里只有精品| 久久久噜噜噜www成人网| 久久久久久噜噜精品免费直播| 久久777国产线看观看精品| 亚洲综合熟女久久久30p| 91麻豆国产精品91久久久| 国产精品免费看久久久香蕉| 国产精品一区二区久久国产| 久久成人国产精品免费软件| 色综合久久88色综合天天 | 精品久久久久中文字| 9999国产精品欧美久久久久久| 久久99精品国产麻豆| 色欲av伊人久久大香线蕉影院 | 99麻豆久久久国产精品免费| 亚洲国产另类久久久精品小说| 日本WV一本一道久久香蕉| 色悠久久久久久久综合网|