• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

        VC++的全屏顯示問(wèn)題

        VC++的全屏顯示問(wèn)題

        更新時(shí)間:2022-04-26 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

        ---- 全屏顯示是一些應(yīng)用軟件程序必不可少的功能。比如在用VC++編輯工程源文件或編輯對(duì)話框等資源時(shí),選擇菜單“ViewFull Screen”,即可進(jìn)入全屏顯示狀態(tài),按“Esc”鍵后會(huì)退出全屏顯示狀態(tài)。
          在VC++6.0中我們用AppWizard按默認(rèn)方式生成單文檔界面的應(yīng)用程序框架。下面將先討論點(diǎn)擊菜單項(xiàng)“ViewFull Screen”實(shí)現(xiàn)全屏顯示的方法,再講述按“Esc”鍵后如何退出全屏顯示狀態(tài)。
          1) 在CMainFrame類(lèi)中,增加如下三個(gè)成員變量。
          class CMainFrame : public CFrameWnd
          { private: //自己添加的三個(gè)成員變量
          WINDOWPLACEMENT m_OldWndPlacement; //用來(lái)保存原窗口位置
          BOOL m_bFullScreen; //全屏顯示標(biāo)志
          CRect m_FullScreenRect; //表示全屏顯示時(shí)的窗口位置
          protected: CMainFrame();
          DECLARE_DYNCREATE(CMainFrame)}
          2)在資源編輯器中編輯菜單IDR_MAINFRAME。在“View”菜單欄下添加菜單項(xiàng)“Full Screen”。在其屬性框中,ID設(shè)置為ID_FULL_SCREEN,Caption為“Full Screen”。還可以在工具欄中添加新的工具圖標(biāo),并使之與菜單項(xiàng)“Full Screen”相關(guān)聯(lián),即將其ID值也設(shè)置為ID_FULL_SCREEN。
          3)設(shè)計(jì)全屏顯示處理函數(shù),在CMainFrame類(lèi)增加上述菜單項(xiàng)ID_FULL_SCREEN消息的響應(yīng)函數(shù)。響應(yīng)函數(shù)如下:
          void CMainFrame::OnFullScreen()
          {GetWindowPlacement(&m_OldWndPlacement);
          CRect WindowRect;
          GetWindowRect(&WindowRect);
          CRect ClientRect;
          RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &ClientRect);
          ClientToScreen(&ClientRect);
          // 獲取屏幕的分辨率
          int nFullWidth=GetSystemMetrics(SM_CXSCREEN);
          int nFullHeight=GetSystemMetrics(SM_CYSCREEN);
          // 將除控制條外的客戶區(qū)全屏顯示到從(0,0)到(nFullWidth, nFullHeight)區(qū)域, 將(0,0)和(nFullWidth, nFullHeight)兩個(gè)點(diǎn)外擴(kuò)充原窗口和除控制條之外的 客戶區(qū)位置間的差值, 就得到全屏顯示的窗口位置
          m_FullScreenRect.left=WindowRect.left-ClientRect.left;
          m_FullScreenRect.top=WindowRect.top-ClientRect.top;
          m_FullScreenRect.right=WindowRect.right-ClientRect.right+nFullWidth;
          m_FullScreenRect.bottom=WindowRect.bottom-ClientRect.bottom+nFullHeight;
          m_bFullScreen=TRUE; // 設(shè)置全屏顯示標(biāo)志為 TRUE
          // 進(jìn)入全屏顯示狀態(tài)
          WINDOWPLACEMENT wndpl;
          wndpl.length=sizeof(WINDOWPLACEMENT);
          wndpl.flags=0;
          wndpl.showCmd=SW_SHOWNORMAL;
          wndpl.rcNormalPosition=m_FullScreenRect;
          SetWindowPlacement(&wndpl);}
          4)重載CMainFrame類(lèi)的OnGetMinMaxInfo函數(shù),在全屏顯示時(shí)提供全屏顯示的位置信息。
          void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
          {if(m_bFullScreen)
          {lpMMI->ptMaxSize.x=m_FullScreenRect.Width();
          lpMMI->ptMaxSize.y=m_FullScreenRect.Height();
          lpMMI->ptMaxPosition.x=m_FullScreenRect.Width();
          lpMMI->ptMaxPosition.y=m_FullScreenRect.Height();
          // 最大的Track尺寸也要改變
          lpMMI->ptMaxTrackSize.x=m_FullScreenRect.Width();
          lpMMI->ptMaxTrackSize.y=m_FullScreenRect.Height();
          }CFrameWnd::OnGetMinMaxInfo(lpMMI) ;
          }完成上面的編程后,可以聯(lián)編執(zhí)行FullScreen.exe,選擇菜單“ViewFull Screen”或點(diǎn)擊與之關(guān)聯(lián)的工具欄按鈕即可進(jìn)入全屏顯示狀態(tài)。但現(xiàn)在還需要增加用戶退出全屏顯示狀態(tài)的操作接口,下面講述如何編程實(shí)現(xiàn)按“Esc”鍵退出全屏顯示狀態(tài)。
          1)在ClassView中選中CMainFrame并單擊鼠標(biāo)右鍵,選擇“Add Member Function...”,添加public類(lèi)型的成員函數(shù)EndFullScreen,該函數(shù)將完成退出全屏顯示的操作。
          void CMainFrame::EndFullScreen()
          {if(m_bFullScreen)
          {// 退出全屏顯示, 恢復(fù)原窗口顯示
          ShowWindow(SW_HIDE);
          SetWindowPlacement(&m_OldWndPlace
        ment);}}
          2)函數(shù)EndFullScreen可以退出全屏顯示狀態(tài),問(wèn)題是如何在“Esc”鍵被按下之后調(diào)用執(zhí)行此函數(shù)。由于視圖類(lèi)可以處理鍵盤(pán)輸入的有關(guān)消息(如WM_KEYDOWN表示用戶按下了某一個(gè)鍵),我們將在視圖類(lèi)CFullScreenView中添加處理按鍵消息WM_KEYDOWN的響應(yīng)函數(shù)OnKeyDown。判斷如果按的鍵為“Esc”鍵,則調(diào)用CMainFrame類(lèi)的函數(shù)EndFullScreen,便可退出全屏顯示狀態(tài)。
          void CFullScreenView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
          {if(nChar==VK_ESCAPE) // 如果按的鍵為Esc鍵
          {// 獲取主框架窗口的指針
          CMainFrame *pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
          // 調(diào)用主窗口類(lèi)的自定義函數(shù) EndFullScreen ,便可退出全屏顯示狀態(tài)
          pFrame->EndFullScreen();}
          CView::OnKeyDown(nChar, nRepCnt, nFlags);}
          這樣我們就實(shí)現(xiàn)了比較專(zhuān)業(yè)的全屏顯示的功能,相信肯定會(huì)令你設(shè)計(jì)的軟件程序增色不少。

        溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

        本類(lèi)教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: a毛片全部播放免费视频完整18| 日本免费高清视频| 成人午夜影视全部免费看| 日日麻批免费40分钟无码| 国产视频精品免费| 亚洲网站在线观看| 色网站在线免费观看| 亚洲综合免费视频| 亚洲一区AV无码少妇电影☆| 国产成人精品日本亚洲18图| 两性色午夜视频免费网| 日日AV拍夜夜添久久免费| 亚洲精品456在线播放| 好吊色永久免费视频大全 | 亚洲日韩精品一区二区三区| 国产在线精品免费aaa片| 波多野结衣中文一区二区免费| 亚洲视频在线一区| 91成人免费在线视频| 亚洲成在人天堂在线| 成人片黄网站色大片免费观看cn| 亚洲国产精品无码久久久蜜芽 | 久久精品亚洲综合| 一个人看的免费观看日本视频www 一个人看的免费视频www在线高清动漫 | 久久久久国色AV免费观看性色 | 日韩免费视频播播| 男男gay做爽爽的视频免费| 99在线视频免费观看视频| 亚洲综合激情九月婷婷| 成人免费无码大片a毛片软件| 亚洲午夜电影在线观看高清| 精品一区二区三区免费毛片爱| 亚洲国产精品VA在线观看麻豆 | 国产亚洲精品成人a v小说| 羞羞漫画登录页面免费| 亚洲精品无码mv在线观看网站| 一级**爱片免费视频| 亚洲国产理论片在线播放| 免费一级做a爰片久久毛片潮喷| 久久99免费视频| 亚洲国产精品无码久久|