在VC++6.0開(kāi)發(fā)中實(shí)現全屏顯示
作者:粟利民,孫強
全屏顯示是一些應用軟件程序必不可少的功能。比如在用VC++編輯工程源文件或編輯對話(huà)框等資源時(shí),
選擇菜單“View\Full Screen”,即可進(jìn)入全屏顯示狀態(tài),按“Esc”鍵后會(huì )退出全屏顯示狀態(tài)。
在VC++6.0中我們用AppWizard按默認方式生成單文檔界面的應用程序框架。
下面將先討論點(diǎn)擊菜單項“View\Full Screen”實(shí)現全屏顯示的方法,再講述按“Esc”鍵后如何退出全屏顯
示狀態(tài)。
1) 在CMainFrame類(lèi)中,增加如下三個(gè)成員變量。
class CMainFrame : public CFrameWnd
{ private: //自己添加的三個(gè)成員變量
WINDOWPLACEMENT m_OldWndPlacement; //用來(lái)保存原窗口位置
BOOL m_bFullScreen; //全屏顯示標志
CRect m_FullScreenRect; //表示全屏顯示時(shí)的窗口位置
protected: CMainFrame();
DECLARE_DYNCREATE(CMainFrame)}
2)在資源編輯器中編輯菜單IDR_MAINFRAME。在“View”菜單欄下添加菜單項“Full Screen”。
在其屬性框中,ID設置為ID_FULL_SCREEN,Caption為“Full Screen”。還可以在工具欄中添加新的工具
圖標,并使之與菜單項“Full Screen”相關(guān)聯(lián),即將其ID值也設置為ID_FULL_SCREEN。
3)設計全屏顯示處理函數,在CMainFrame類(lèi)增加上述菜單項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);
// 將除控制條外的客戶(hù)區全屏顯示到從(0,0)到(nFullWidth, nFullHeight)區域, 將(0,0)和
(nFullWidth, nFullHeight)兩個(gè)點(diǎn)外擴充原窗口和除控制條之外的 客戶(hù)區位置間的差值,
就得到全屏顯示的窗口位置
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
// 進(jìn)入全屏顯示狀態(tài)
WINDOWPLACEMENT wndpl;
wndpl.length=sizeof(WINDOWPLACEMENT);
wndpl.flags=0;
wndpl.showCmd=SW_SHOWNORMAL;
wndpl.rcNormalPosition=m_FullScreenRect;
SetWindowPlacement(&wndpl);}
海洋工作室 seaboy 制作搜集
下一頁(yè)