windows应用程序中有很多的播放器都有快捷键控制窗口以全屏幕的方式显示。MFC实现给应用程序加上全屏幕的功能,并不需要很多的代码,比如给一个基于对话框的应用程序加上全屏功能只需要以下少量代码就可以实现了。
实现代码如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
void CFullScreenDlg::FullScreenView( void ) { RECT rectDesktop; WINDOWPLACEMENT wpNew; if (!IsFullScreen()) { // We'll need these to restore the original state. GetWindowPlacement (&m_wpPrev); //Adjust RECT to new size of window ::GetWindowRect ( ::GetDesktopWindow(), &rectDesktop ); ::AdjustWindowRectEx(&rectDesktop, GetStyle(), FALSE, GetExStyle()); // Remember this for OnGetMinMaxInfo() 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 ); } void CFullScreenDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI) { // TODO: Add your message handler code here and/or call default 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); } bool CFullScreenDlg::IsFullScreen( void ) { // 记录窗口当前是否处于全屏状态 return m_bFullScreen; } |