在VC中实现全屏窗口程序
2010-09-04 20:47:57 来源:WEB开发网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) ;
}
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);}
这样我们就实现了比较专业的全屏显示的功能,相信肯定会令你设计的软件程序增色不少。
更多精彩
赞助商链接