• <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
            久久人人爽人人爽人人爽| 一本一本久久a久久精品综合麻豆| 99久久做夜夜爱天天做精品| 理论片午午伦夜理片久久| 久久人人添人人爽添人人片牛牛| 久久综合久久自在自线精品自| 国内精品久久九九国产精品| 无码乱码观看精品久久| 国产精品久久午夜夜伦鲁鲁| 久久精品国产亚洲AV不卡| 国内精品久久久久影院薰衣草| 国产精品99久久不卡| 99久久国产精品免费一区二区| 国产精品免费久久久久影院| 无码超乳爆乳中文字幕久久| 久久高潮一级毛片免费| 久久99精品国产99久久| 伊人久久大香线蕉av不变影院| 久久99精品久久久久久齐齐| 久久99精品久久久久久久久久| 欧美伊人久久大香线蕉综合69| 久久电影网一区| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 久久精品国产网红主播| 无码国内精品久久综合88| 国产一区二区精品久久凹凸| 久久久老熟女一区二区三区| 久久无码AV一区二区三区| 久久亚洲欧洲国产综合| 国产精自产拍久久久久久蜜| 久久久久久毛片免费播放| 亚洲av日韩精品久久久久久a| 中文字幕久久亚洲一区| 久久精品成人一区二区三区| 国产精品免费久久| 99久久精品这里只有精品 | 久久国产乱子伦精品免费午夜| 久久综合久久综合久久| 66精品综合久久久久久久| 99久久精品国产综合一区| 久久精品?ⅴ无码中文字幕|