⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 childfrm.cpp

📁 这是MFC经典问答书的光盘内容
💻 CPP
字号:
// ChildFrm.cpp : implementation of the CChildFrame class
//

#include "stdafx.h"
#include "LimitResize.h"

#include "ChildFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CChildFrame

IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWnd)

BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)
	//{{AFX_MSG_MAP(CChildFrame)
	ON_WM_GETMINMAXINFO()
	ON_COMMAND(ID_TRACKING_LIMIT, OnTrackingLimit)
	ON_COMMAND(ID_TRACKING_DONT_LIMIT, OnTrackingDontLimit)
	ON_UPDATE_COMMAND_UI(ID_TRACKING_LIMIT, OnUpdateTrackingLimit)
	ON_UPDATE_COMMAND_UI(ID_TRACKING_DONT_LIMIT, OnUpdateTrackingDontLimit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CChildFrame construction/destruction

CChildFrame::CChildFrame()
{
	m_bLimitTracking = TRUE;
}

CChildFrame::~CChildFrame()
{
}

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	// No 'Maximize' caption button
	cs.style &= ~WS_MAXIMIZEBOX;

	return CMDIChildWnd::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CChildFrame diagnostics

#ifdef _DEBUG
void CChildFrame::AssertValid() const
{
	CMDIChildWnd::AssertValid();
}

void CChildFrame::Dump(CDumpContext& dc) const
{
	CMDIChildWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CChildFrame message handlers

void CChildFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
{
	// 1 - Let the default window proc fill the MINMAXINFO structure
	CFrameWnd::OnGetMinMaxInfo(lpMMI);

	if( m_bLimitTracking )
	{
		// Calculate the "non-client overhead" of the frame window
		CRect rectClient;
		GetClientRect( &rectClient );

		CRect rectWindow;
		GetWindowRect( &rectWindow );

		int nWidthOverhead = rectWindow.Width() - rectClient.Width();
		int nHeightOverhead = rectWindow.Height() - rectClient.Height();

		// 2 - Modify the MINMAXINFO structure to reflect our
		// size limits

		// Here we want a minimum CLIENT size of 200x50 pixels
		// and a maximum CLIENT size of 400x200 pixels

		lpMMI->ptMinTrackSize.x = 200 + nWidthOverhead;
		lpMMI->ptMinTrackSize.y = 50 + nHeightOverhead;

		lpMMI->ptMaxTrackSize.x = 400 + nWidthOverhead;
		lpMMI->ptMaxTrackSize.y = 200 + nHeightOverhead;
	}
}



void CChildFrame::OnTrackingLimit() 
{
	m_bLimitTracking = TRUE;
}

void CChildFrame::OnTrackingDontLimit() 
{
	m_bLimitTracking = FALSE;
}

void CChildFrame::OnUpdateTrackingLimit(CCmdUI* pCmdUI) 
{
	pCmdUI->SetRadio( m_bLimitTracking );
}

void CChildFrame::OnUpdateTrackingDontLimit(CCmdUI* pCmdUI) 
{
	pCmdUI->SetRadio( !m_bLimitTracking );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -