// FullScreenHandler.h: interface for the CFullScreenHandler class.
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_FULLSCREENHANDLER_H__0D3A7F23_064A_4BAE_935B_5B71B2C17AD3__INCLUDED_)
#define AFX_FULLSCREENHANDLER_H__0D3A7F23_064A_4BAE_935B_5B71B2C17AD3__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CFullScreenHandler  
{
public:
CFullScreenHandler();
virtual ~CFullScreenHandler();
void Maximize(CFrameWnd* pFrame, CWnd* pView);
void Restore(CFrameWnd* pFrame);
BOOL InFullScreenMode()
{
return !m_rcRestore.IsRectEmpty();
}
CSize GetMaxSize();
protected:
CRect m_rcRestore;
};
// Global instance
extern CFullScreenHandler FullScreenHandler;
#endif // !defined(AFX_FULLSCREENHANDLER_H__0D3A7F23_064A_4BAE_935B_5B71B2C17AD3__INCLUDED_)
// FullScreenHandler.cpp: implementation of the CFullScreenHandler class.
//
//////////////////////////////////////////////////////////////////////#include "stdafx.h"
#include "AppFramework.h"
#include "FullScreenHandler.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endifCFullScreenHandler FullScreenHandler;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////CFullScreenHandler::CFullScreenHandler()
{
m_rcRestore.SetRectEmpty();
}CFullScreenHandler::~CFullScreenHandler()
{}//////////////////// Resize frame so view's client area fills the entire screen. Use
// GetSystemMetrics to get the screen size -- the rest is pixel
// arithmetic.
//
void CFullScreenHandler::Maximize(CFrameWnd* pFrame, CWnd* pView)
{
// get view rectangle
if (pView)
{
        CRect rcv;
pView->GetWindowRect(&rcv);
// get frame rectangle    
pFrame->GetWindowRect(m_rcRestore);
// save for restore      
const CRect& rcf = m_rcRestore;
// frame rect      
// now compute new rect    
CRect rc(0,0, GetSystemMetrics(SM_CXSCREEN),
GetSystemMetrics(SM_CYSCREEN));
rc.left  += rcf.left  - rcv.left;
rc.top   += rcf.top   - rcv.top;
rc.right += rcf.right - rcv.right;
rc.bottom+= rcf.bottom- rcv.bottom;
// move frame!   
pFrame->SetWindowPos(NULL, rc.left, rc.top,
rc.Width(), rc.Height(), SWP_NOZORDER);
  }
}CSize CFullScreenHandler::GetMaxSize()
{
CRect rc(0,0,
GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
rc.InflateRect(10,50);
return rc.Size();
}void CFullScreenHandler::Restore(CFrameWnd* pFrame)
{
    const CRect& rc = m_rcRestore;
pFrame->SetWindowPos(NULL, rc.left, rc.top,
rc.Width(), rc.Height(), SWP_NOZORDER);
m_rcRestore.SetRectEmpty();
} CMainFrame *pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; if (FullScreenHandler.InFullScreenMode())
FullScreenHandler.Restore(pFrame);
else
FullScreenHandler.Maximize(pFrame, this);四周还有边框的,不知道怎么回事?MFC