该程序基于VS2010 SP1,MFC单文档结构

1、创建项目:

(1)利用MFC想到创建一个单文档工程:

MFC绘图板(一)_派生类


(2)选择单文档,MFC标准

MFC绘图板(一)_派生类_02


(3)选择经典菜单,传统工具栏,完成。

MFC绘图板(一)_MFC绘图板_03


(4)类结构

MFC绘图板(一)_派生类_04


2、打开CMainFrame类,删除创建工具栏的代码:

(1)在MainFrm.h中,删除变量声明语句:


CToolBar          m_wndToolBar;

(2)在MainFrm.cpp的OnCreate函数中,删除以下代码:


if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("未能创建工具栏\n");
		return -1;      // 未能创建
	}
// TODO: 如果不需要可停靠工具栏,则删除这三行
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);



3、现在,程序运行如下(工具栏消失了):

MFC绘图板(一)_工具栏_05


4、分割客户区,分为上下两个部分:

(1)添加基于CFormView类的派生类CTopFormView:

MFC绘图板(一)_MFC绘图板_06


(2)添加基于CFrame类的派生类CBottomFormView:

MFC绘图板(一)_派生类_07


MFC绘图板(一)_工具栏_08

(3)在CMainFrame中定义一个CSplitterWnd的对象:


CSplitterWnd m_splitWnd;



(4)在MainFrm.cpp中包含头文件:

#include "TopFormView.h"
#include "BottomFormView.h"




(5)重写CMainFrame的虚函数OnCreateClient,在其中添加以下代码:


BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
	// TODO: 在此添加专用代码和/或调用基类
	BOOL bFlag = m_splitWnd.CreateStatic(this, 2, 1);  
	if (bFlag)  
	{  
		CSize sz(100, 100);  
		m_splitWnd.CreateView(0, 0, RUNTIME_CLASS(CTopFormView), sz, pContext);  
		m_splitWnd.CreateView(1, 0, RUNTIME_CLASS(CBottomFormView), sz, pContext);  
	}  

	return bFlag;

	//return CFrameWnd::OnCreateClient(lpcs, pContext);
}



5、现在,运行结果如下(客户区分成上下两个部分):

MFC绘图板(一)_工具栏_09


6、说明:上面部分用于显示绘图选项,例如颜色、线型、线宽等等。


7、本篇结束,下篇继续... ...