在VC++6.0開發中實現全屏顯示 (轉)
在VC++6.0開發中實現全屏顯示 (轉)[@more@]
在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_H);
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);}
這樣我們就實現了比較專業的全屏顯示的功能,相信肯定會令你設計的軟體程式增色不少。
(廣東 粟利民 孫強)
在VC++6.0開發中實現全屏顯示
全屏顯示是一些應用必不可少的功能。比如在用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_H);
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);}
這樣我們就實現了比較專業的全屏顯示的功能,相信肯定會令你設計的軟體程式增色不少。
(廣東 粟利民 孫強)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-987972/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 直播系統開發,實現在進度條中顯示文字顯示進度
- iOS開發中QQ好友列表下拉顯示全部好友實現思路iOS
- js實現頁面部分割槽域全屏顯示及退出JS
- tabview全屏顯示分割線View
- Qt全屏顯示和按鍵ESC退出全屏QT
- SNMP用VC++6.0實現的方法 (轉)C++
- html中背景圖按比例縮放全屏顯示HTML
- Fullscreen API 全屏顯示網頁API網頁
- vue 3 頁面全屏顯示Vue
- 在Delphi中開發使用多顯示器的應用程式
- 在工作列上顯示圖示 (轉)
- OpenCV_python全屏顯示影像OpenCVPython
- 程式介面多模式顯示的實現 (轉)模式
- 元素在div中底部顯示
- win10投影不能全屏顯示如何解決_win10怎麼設定投影儀全屏顯示Win10
- 【聊技術】在Android中實現自適應文字大小顯示Android
- 在Redhat Linux中顯示粗體、斜體中文(轉)RedhatLinux
- 在瀑布式專案中實現敏捷開發敏捷
- Geoserver + MySQL實現圖層顯示和文字顯示ServerMySql
- CSS實現限制顯示的字數,超出顯示"..."CSS
- Flutter適配安卓劉海、水滴屏顯示全屏Flutter安卓
- asp.net開發中利用jquery來實現滾動下拉標題浮動固定顯示ASP.NETjQuery
- 用CSS樣式實現顯示隱藏層 (轉)CSS
- 用javabean來實現MySQL的分頁顯示(轉)JavaBeanMySql
- 在sql*plus中顯示長字元SQL字元
- flash在jsp中不能顯示?JS
- Angular 實現輸入框中顯示文章標籤Angular
- 在VC中呼叫WORD(顯示,修改,存檔,執行宏) (轉)
- 在托盤上顯示Balloon Tooltip (轉)
- 在Delphi 中用程式實現自定義窗體的建立和顯示順序(2) (轉)
- 直播電商平臺開發,css實現超出部分顯示省略號,控制文字CSS
- 在vim中實現批次加密(轉)加密
- 直播app系統原始碼,canvas上放置按鈕並實現點選之後全屏顯示APP原始碼Canvas
- 使用 Nuxt 的 showError 顯示全屏錯誤頁面UXError
- VC實現對話方塊上資訊的顯示 (轉)
- Windows10系統開始選單顯示全屏的解決方法Windows
- 在sqlserver中顯示錶的結構SQLServer
- Extjs 在GridPanel中顯示圖示的方法JS