该程序基于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、本篇结束,下篇继续... ...