MFC绘图板(一)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wwkaven/article/details/40657709

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

1、创建项目:

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



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



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



(4)类结构



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、现在,程序运行如下(工具栏消失了):



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

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



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




(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、现在,运行结果如下(客户区分成上下两个部分):



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


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




展开阅读全文

没有更多推荐了,返回首页