MFC实现全屏功能代码实例
windows应用程序中有很多的播放器都有快捷键控制窗口以全屏幕的方式显示。MFC实现给应用程序加上全屏幕的功能,并不需要很多的代码,比如给一个基于对话框的应用程序加上全屏功能只需要以下少量代码就可以实现了。
实现代码如下所示:
voidCFullScreenDlg::FullScreenView(void)
{
RECTrectDesktop;
WINDOWPLACEMENTwpNew;
if(!IsFullScreen())
{
//We'llneedthesetorestoretheoriginalstate.
GetWindowPlacement(&m_wpPrev);
//AdjustRECTtonewsizeofwindow
::GetWindowRect(::GetDesktopWindow(),&rectDesktop);
::AdjustWindowRectEx(&rectDesktop,GetStyle(),FALSE,GetExStyle());
//RememberthisforOnGetMinMaxInfo()
m_rcFullScreenRect=rectDesktop;
wpNew=m_wpPrev;
wpNew.showCmd=SW_SHOWNORMAL;
wpNew.rcNormalPosition=rectDesktop;
m_bFullScreen=true;
}
else
{
//退出全屏幕时恢复到原来的窗口状态
m_bFullScreen=false;
wpNew=m_wpPrev;
}
SetWindowPlacement(&wpNew);
}
voidCFullScreenDlg::OnGetMinMaxInfo(MINMAXINFO*lpMMI)
{
//TODO:Addyourmessagehandlercodehereand/orcalldefault
if(IsFullScreen())
{
lpMMI->ptMaxSize.y=m_rcFullScreenRect.Height();
lpMMI->ptMaxTrackSize.y=lpMMI->ptMaxSize.y;
lpMMI->ptMaxSize.x=m_rcFullScreenRect.Width();
lpMMI->ptMaxTrackSize.x=lpMMI->ptMaxSize.x;
}
CDialog::OnGetMinMaxInfo(lpMMI);
}
boolCFullScreenDlg::IsFullScreen(void)
{
//记录窗口当前是否处于全屏状态
returnm_bFullScreen;
}