MainFrm.h
private:
//实现窗口的全屏显示,添加的三个成员变量 
WINDOWPLACEMENT m_OldWndPlacement;//用来保存原窗口位置 
CRect m_rectFullScreen;//表示全屏显示时的窗口位置
public:
BOOL m_bFullScreen;//全屏显示标志MainFrm.cpp
CMainFrame::CMainFrame()
{
m_bFullScreen = FALSE;//非全屏化
}
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
{
// TODO: Add your message handler code here and/or call default
//在全屏显示时提供全屏显示的位置信息
if(m_bFullScreen) 
{
lpMMI->ptMaxSize.x=m_rectFullScreen.Width(); 
lpMMI->ptMaxSize.y=m_rectFullScreen.Height(); 
lpMMI->ptMaxPosition.x=m_rectFullScreen.Width(); 
lpMMI->ptMaxPosition.y=m_rectFullScreen.Height();
// 最大的Track尺寸也要改变 
lpMMI->ptMaxTrackSize.x=m_rectFullScreen.Width();
lpMMI->ptMaxTrackSize.y=m_rectFullScreen.Height();
}

CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
//全屏化显示
void CMainFrame::OnViewFullscreen() 
{
if (m_bFullScreen)
return;
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_rectFullScreen.left = WindowRect.left - ClientRect.left;
m_rectFullScreen.top = WindowRect.top - ClientRect.top; 
m_rectFullScreen.right=WindowRect.right - ClientRect.right + nFullWidth; 
m_rectFullScreen.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_rectFullScreen; 
SetWindowPlacement(&wndpl);
}
void CMainFrame::EndFullScreen()
{
if(m_bFullScreen) 
{
// 退出全屏显示, 恢复原窗口显示 
m_bFullScreen = FALSE;
ShowWindow(SW_HIDE); 
SetWindowPlacement(&m_OldWndPlacement);
}
}