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

📄 childfrm.cpp

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

#include "stdafx.h"
#include "AddToolbars.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_CREATE()
	ON_COMMAND(ID_VIEW_SHAPES_TOOLBAR2, OnViewShapesToolbar)
	ON_UPDATE_COMMAND_UI(ID_VIEW_SHAPES_TOOLBAR2, OnUpdateViewShapesToolbar)
	ON_COMMAND_EX(ID_COLOR_RED, OnColor)
	ON_COMMAND_EX(ID_COLOR_GREEN, OnColor)
	ON_COMMAND_EX(ID_COLOR_BLUE, OnColor)
	ON_UPDATE_COMMAND_UI(ID_COLOR_RED, OnUpdateColor)
	ON_UPDATE_COMMAND_UI(ID_COLOR_GREEN, OnUpdateColor)
	ON_UPDATE_COMMAND_UI(ID_COLOR_BLUE, OnUpdateColor)

	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

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

CChildFrame::CChildFrame()
{
	// TODO: add member initialization code here
	m_nColor = ID_COLOR_RED;	
}

CChildFrame::~CChildFrame()
{
}

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	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

///////////////////////////////////////////////////////////
// Utility functions defined in MainFrm.cpp

BOOL EkIsBarVisible( CControlBar* pBar );

void EkDockBarNextTo(	CControlBar* pNewBar,
						CControlBar* pDockedBar,
						UINT nDockBarID = AFX_IDW_DOCKBAR_TOP );

BOOL EkCreateToolBar(	CFrameWnd* pParentFrame,
						CToolBar* pBar,
						UINT nIDBar,
						UINT nIDResource = 0,
						DWORD dwStyle1 = WS_CHILD | WS_VISIBLE | CBRS_TOP,
						DWORD dwStyle2 = CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC );

void EkDockToolBar(	CFrameWnd* pParentFrame,
					CToolBar* pBar,
					UINT nDockBarID = AFX_IDW_DOCKBAR_TOP,
					CControlBar* pBarNextTo = NULL,
					DWORD dwStyleDocking = CBRS_ALIGN_ANY );

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

int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// 1 - Create toolbars
	if(		!EkCreateToolBar( this, &m_wndShapes1, IDR_SHAPES )
		||	!EkCreateToolBar( this, &m_wndColors1, IDR_COLORS )
		||	!EkCreateToolBar( this, &m_wndDemo1, IDR_DEMO_TOOLBAR2 )
		||	!EkCreateToolBar( this, &m_wndColors2, IDR_COLORS )
		||	!EkCreateToolBar( this, &m_wndDemo2, IDR_DEMO_TOOLBAR2 )
		||	!EkCreateToolBar( this, &m_wndColors3, IDR_COLORS )
		||	!EkCreateToolBar( this, &m_wndShapes2, IDR_SHAPES ) )
	{
		return -1;	// fail to create
	}

	// 2 - Define main frame window docking behavior
	EnableDocking(CBRS_ALIGN_ANY);

	// 3 - Define toolbar docking behavior, dock toolbars
	EkDockToolBar( this, &m_wndShapes1 );
	EkDockToolBar( this, &m_wndColors1, AFX_IDW_DOCKBAR_TOP, &m_wndShapes1 );
	EkDockToolBar( this, &m_wndDemo1, AFX_IDW_DOCKBAR_LEFT );
	EkDockToolBar( this, &m_wndColors2, AFX_IDW_DOCKBAR_RIGHT );
	EkDockToolBar( this, &m_wndDemo2, AFX_IDW_DOCKBAR_RIGHT, &m_wndColors2 );
	EkDockToolBar( this, &m_wndColors3, AFX_IDW_DOCKBAR_BOTTOM );
	EkDockToolBar( this, &m_wndShapes2, AFX_IDW_DOCKBAR_BOTTOM, &m_wndColors3 );

	return 0;
}

void CChildFrame::OnViewShapesToolbar() 
{
	ShowControlBar( &m_wndShapes1, !EkIsBarVisible( &m_wndShapes1 ), FALSE );
	ShowControlBar( &m_wndShapes2, !EkIsBarVisible( &m_wndShapes2 ), FALSE );
}

void CChildFrame::OnUpdateViewShapesToolbar(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck( EkIsBarVisible( &m_wndShapes1 ) );	
}

BOOL CChildFrame::OnColor(UINT nID)
{
	m_nColor = nID;
	return TRUE;
}

void CChildFrame::OnUpdateColor(CCmdUI* pCmdUI)
{
	pCmdUI->SetCheck( m_nColor == pCmdUI->m_nID );	
}

⌨️ 快捷键说明

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