分割窗口将来自窗口分成几个部分,办会仍界每个部分通常代表一个360百科视图(但也可价哪以是具有子窗口标识的CWnd对象),又范府帝否八影景农称窗格。
如图所示。如果想在一个窗口里面观察文档的不同部分,或者是在一个窗口里来自用不同类型的视图(比如用图表和表格)观察同一个文档,那么采用分割窗口是非常方便的。许多优秀的软件都采用了分割窗口技术,因此我们有必要掌握分割窗口的用法。
分割窗口分为动态分割窗口和静态分割窗口。
动态分割窗口是指:用360百科户可以动态的分割和除去分割窗口,分割窗口会创建和删除相应的窗格。Microsoft Word就是使围饭财末源热点条距袁用动态分割窗口的例子,这费委判移拿载减门跑是一种最常用的分割窗口。线别灯械论去飞叶动态分割窗口最多可以有2行´ 2列个格。
静态分割窗口是指:在窗口创去派免流父半若先止帮建时,分割窗口的窗格就已经创建好了,且窗格的数量和顺序不会改变。窗格为一个分割条所分割,用户可以拖动分割条调整相应的窗格的大小。
CSplitterWnd类
MFC中的分割窗口类-CSplitterWnd类提供了分割窗口的功能。CSplitterWnd类中包含一个分割器窗口,该分割器窗口360百科就是一个包含多个窗格的窗口。我们分割窗口时就是直接在此分割器窗口中分割的。
下面介绍三个最常用的成员函数:
virtual BOOL Create(
CWnd* pParentWnd,
永完口长林着东革规举少int nMaxRows,
int nMaxCols,
SIZE sizeMin,
CCreateContext* pContext,
粮帝它延策机电营DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,
粉温体片字族马结逐积石 UINT nID = AFX_IDW_PANE_FIRST
);
创建动态分割窗口。参数pParentWnd为分割器窗口的父框架窗口;物年级参数nMaxRows为分割器窗主口的最大行数,不能超过2;参数nMaxCols为分割器窗口的最大列数,也不能超过2;参数sizeMin为窗格能显示的最小尺寸,如果窗格尺寸小于sizeMin则不显示;参数pContext为指向CCreateContext结构的指针,大多数情况下可以赋值为父框架窗口的pContext;参数dwStyle指定四己也窗口风格;参数nID为误赶依含边再获并品爱皮分割窗口的ID,除非分割器窗口嵌入到另一个分割器窗口中,否则可以取值AFX_IDW_PANE_FIRS者波药克存表牛六四T。
virtual BOOL CreateStatic(
CWnd* pParentWnd,
int nRows,
int nCols,
DWORD dwStyle = WS_CHILD | WS_VISIBL战E,
UINT nID = AFX_IDW_PANE_FIRST
心直处城裂十常干均切 );
创建静态分割窗口。参关坏数pParentWnd、dwStyle和nID同上;参数nRows为行数,不能超过16;参数nCols为列数,同样不能超过16。
virtual BOOL CreateView(
int row,
int col,
CRuntimeClass* pViewClass,
SIZE sizeInit,
CCreateContext* pContext
);
为静态分割窗口创建窗格视图。参数row指定分割器窗口中放置新视图的行;己操雨权标响都参数col指定放置新视图的列;参数pViewClass指定新视图的CRun经材课预衣临和空胶timeClass对象;参数sizeInit指定新视图的初始大小;参数pContext为指向CCreateContext结构的指针,通常可以赋值为传递给父框架窗口决的重载函数CFrameWnd你皇己负坚兴一效损::OnCreateClient的pContext参数值。
创建首评因他板动态分割窗口的步另殖块围际身尽龙容骤为:
1. 在父框那了许文生八取架类中定义一个CSplitterWnd类型的成员对象。
2. 重载父框架类的CFrameWnd::OnCreateClient成员函数。
3. 在重载的CFrameWnd::OnCreateClient函数中调用CSplitterWnd成员对象的Create函数。
创建静态分割窗口的步骤为:
1. 在父框架类中定义一个CSplitterWnd类型的成员对象。
2. 重载父框架类的CFrameWnd::OnCreateClient成员函数。
3. 在重载的CFrameWnd::OnCreateClient函数中调用CSplitterWnd成员对象的CreateStatic成员函数,然后可以调用CSplitterWnd成员对象的CreateView成员函数为每个窗格创建视图。