- 11
- 0
- 约 12页
- 2015-10-16 发布于江苏
- 举报
PAGE \* MERGEFORMAT12
基于单文档的窗口分割
简介部分是对于MFC应用程序的介绍,在博客上看到的,觉得受益匪浅,所以写到这里。不需要的朋友可以从第二部分程序设计开始看起。
目录
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc371769115 基于单文档的窗口分割 PAGEREF _Toc371769115 \h 1
HYPERLINK \l _Toc371769116 简介 PAGEREF _Toc371769116 \h 2
HYPERLINK \l _Toc371769117 MFC应用程序类型简介 PAGEREF _Toc371769117 \h 2
HYPERLINK \l _Toc371769118 单文档与多视图 PAGEREF _Toc371769118 \h 4
HYPERLINK \l _Toc371769119 单文档多视图程序设计 PAGEREF _Toc371769119 \h 5
HYPERLINK \l _Toc371769120 Step1:创建单文档的MFC程序 PAGEREF _Toc371769120 \h 5
HYPERLINK \l _Toc371769121 Step2:声明相关的变量。 PAGEREF _Toc371769121 \h 5
HYPERLINK \l _Toc371769122 Step3:重载OnCreateClient()函数,进行窗口的分割 PAGEREF _Toc371769122 \h 6
HYPERLINK \l _Toc371769123 Step4:设置行列初始值 PAGEREF _Toc371769123 \h 8
HYPERLINK \l _Toc371769124 附:代码 PAGEREF _Toc371769124 \h 9
简介
MFC应用程序类型简介
在Microsoft VC++ 6.0中,基于MFC的应用程序一般分为以下几种:
多文档界面(MDI)
单文档界面(SDI)
基于对话框的应用程序。
图1-1 应用程序类型
其中单文档又可分为单视图的和多视图的。
图1-2 单文档单视图
图1-3 单文档多视图
一般情况下,单文档仅需要单视图就够了,如Windows自带的记事本、画图程序等等,但在一些情况下,单文档需要多视图支持,比如同时观察文档的不同部分,同时从不同的角度观察同一文档等。
? 在MFC的框架下,文档对象(CDocument)有一个保存其所有视图的列表,并提供了增加视图(AddView)与删除视图(RemoveView)函数,以及当文档内容改变时通知其所有视图的方法(UpdateAllViews)。
1-4 类视图
通过多文档框架的窗口复制机制和单文档框架的分割窗口机制是实现单文档多视图的主要方法。
单文档与多视图
? 一般地,单文档与多视图有三种情况:
1)在多文档界面MDI中,每个视图位于MDI的一个独立子文档框架中,视图对象基于同一个视图类。用户可以通过“窗口|新窗口”菜单,为同一文档的视图再创建一个窗口,通过新创建的窗口,可以编辑和观察文档的另一部分,同一文档各个视图之间自动实现同步,用户修改一个视图的内容,在另外的视图中也自动更新。
MFC框架通过复制原来的子框架窗口和其中的视图来实现上面的功能,并且是完全自动的。
2)视图对象基于同一视图类,所有视图位于同一文档框架中。
? 分割窗口将单文档窗口的视图区分割成几个独立的视图,框架从同一视图类创建多个视图对象。Word的子窗口即属于这种类型。
3)视图对象基于不同的视图类,所有的视图位于同一文档框架中。
? 多个视图共享同一文档框架,但从不同的视图类创建,每个视图可以为文档提供不同的观察和编辑方法。比如在一个窗口里观察文档的不同部分,或者是在一个窗口里用不用类型的视图观察同一个文档。这种类型的实现方法是通过重载框架类CMainFrame的成员函数 OnCreateClient实现,用户可以根据不同需要将窗口分为垂直或水平的多个分割窗口。
单文档多视图程序设计?
下面通过实例设计,介绍单文档多视图的窗口分割(上面介绍的第二种情况)。
Step1:创建单文档的MFC程序
创建一个基于MFC的应用程序,程序类型选择“单文档”,命名为“SplitterTest” 。
Step2:声明相关的变量。
在MainFrm.h中添加如下变量声明。
public:
CSplitterWnd m_miansplitter;
CSplitterWnd m_lef
原创力文档

文档评论(0)