分割视图

分割视图

中文名 分割视图
特点 每个部分通常代表一个视图
目录导航

分割视图简介

分割窗口将窗口分成几个部分,每个部分通常代表一个视图(但也可以是具有子窗口标识的CWnd对象),又称窗格。如图所示。如果想在一个窗口里面观察文档的不同部分,或者是在一个窗口里用不同类型的视图(比如用图表和表格)观察同一个文档,那么采用分割窗口是非常方便的。许多优秀的软件都采用了分割窗口技术,因此我们有必要掌握分割窗口的用法。

分割窗口分为两类:动态分割窗口和静态分割窗口。

动态分割窗口是指:用户可以动态的分割和除去分割窗口,分割窗口会创建和删除相应的窗格。Microsoft Word就是使用动态分割窗口的例子,这是一种最常用的分割窗口。动态分割窗口最多可以有2行´ 2列个格。

静态分割窗口是指:在窗口创建时,分割窗口的窗格就已经创建好了,且窗格的数量和顺序不会改变。窗格为一个分割条所分割,用户可以拖动分割条调整相应的窗格的大小。

CSplitterWnd类

MFC中的分割窗口类-CSplitterWnd类提供了分割窗口的功能。CSplitterWnd类中包含一个分割器窗口,该分割器窗口就是一个包含多个窗格的窗口。我们分割窗口时就是直接在此分割器窗口中分割的。

下面介绍三个最常用的成员函数:

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_FIRST。

virtual BOOL CreateStatic(

CWnd* pParentWnd,

int nRows,

int nCols,

DWORD dwStyle = WS_CHILD | WS_VISIBLE,

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指定新视图的CRuntimeClass对象;参数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成员函数为每个窗格创建视图。 

相关百科
返回顶部
产品求购 求购