• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    VC++的全屏顯示問題

    發布: 2007-7-14 21:11 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 33次 | 進入軟件測試論壇討論

    領測軟件測試網 ---- 全屏顯示是一些應用軟件程序必不可少的功能。比如在用VC++編輯工程源文件或編輯對話框等資源時,選擇菜單“ViewFull Screen”,即可進入全屏顯示狀態,按“Esc”鍵后會退出全屏顯示狀態。
      在VC++6.0中我們用AppWizard按默認方式生成單文檔界面的應用程序框架。下面將先討論點擊菜單項“ViewFull Screen”實現全屏顯示的方法,再講述按“Esc”鍵后如何退出全屏顯示狀態。
      1) 在CMainFrame類中,增加如下三個成員變量。
      class CMainFrame : public CFrameWnd
      { private: //自己添加的三個成員變量
      WINDOWPLACEMENT m_OldWndPlacement; //用來保存原窗口位置
      BOOL m_bFullScreen; //全屏顯示標志
      CRect m_FullScreenRect; //表示全屏顯示時的窗口位置
      protected: CMainFrame();
      DECLARE_DYNCREATE(CMainFrame)}
      2)在資源編輯器中編輯菜單IDR_MAINFRAME。在“View”菜單欄下添加菜單項“Full Screen”。在其屬性框中,ID設置為ID_FULL_SCREEN,Caption為“Full Screen”。還可以在工具欄中添加新的工具圖標,并使之與菜單項“Full Screen”相關聯,即將其ID值也設置為ID_FULL_SCREEN。
      3)設計全屏顯示處理函數,在CMainFrame類增加上述菜單項ID_FULL_SCREEN消息的響應函數。響應函數如下:
      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);
     。 將除控制條外的客戶區全屏顯示到從(0,0)到(nFullWidth, nFullHeight)區域, 將(0,0)和(nFullWidth, nFullHeight)兩個點外擴充原窗口和除控制條之外的 客戶區位置間的差值, 就得到全屏顯示的窗口位置
      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; // 設置全屏顯示標志為 TRUE
     。 進入全屏顯示狀態
      WINDOWPLACEMENT wndpl;
      wndpl.length=sizeof(WINDOWPLACEMENT);
      wndpl.flags=0;
      wndpl.showCmd=SW_SHOWNORMAL;
      wndpl.rcNormalPosition=m_FullScreenRect;
      SetWindowPlacement(&wndpl);}
      4)重載CMainFrame類的OnGetMinMaxInfo函數,在全屏顯示時提供全屏顯示的位置信息。
      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) ;
      }完成上面的編程后,可以聯編執行FullScreen.exe,選擇菜單“ViewFull Screen”或點擊與之關聯的工具欄按鈕即可進入全屏顯示狀態。但現在還需要增加用戶退出全屏顯示狀態的操作接口,下面講述如何編程實現按“Esc”鍵退出全屏顯示狀態。
      1)在ClassView中選中CMainFrame并單擊鼠標右鍵,選擇“Add Member Function...”,添加public類型的成員函數EndFullScreen,該函數將完成退出全屏顯示的操作。
      void CMainFrame::EndFullScreen()
      {if(m_bFullScreen)
      {// 退出全屏顯示, 恢復原窗口顯示
      ShowWindow(SW_HIDE);
      SetWindowPlacement(&m_OldWndPlace
    ment);}}
      2)函數EndFullScreen可以退出全屏顯示狀態,問題是如何在“Esc”鍵被按下之后調用執行此函數。由于視圖類可以處理鍵盤輸入的有關消息(如WM_KEYDOWN表示用戶按下了某一個鍵),我們將在視圖類CFullScreenView中添加處理按鍵消息WM_KEYDOWN的響應函數OnKeyDown。判斷如果按的鍵為“Esc”鍵,則調用CMainFrame類的函數EndFullScreen,便可退出全屏顯示狀態。
      void CFullScreenView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
      {if(nChar==VK_ESCAPE) // 如果按的鍵為Esc鍵
      {// 獲取主框架窗口的指針
      CMainFrame *pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
     。 調用主窗口類的自定義函數 EndFullScreen ,便可退出全屏顯示狀態
      pFrame->EndFullScreen();}
      CView::OnKeyDown(nChar, nRepCnt, nFlags);}
      這樣我們就實現了比較專業的全屏顯示的功能,相信肯定會令你設計的軟件程序增色不少。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>