设为首页 加入收藏

TOP

7.4.1 简单视图分割
2013-10-07 00:36:36 来源: 作者: 【 】 浏览:63
Tags:7.4.1 简单 分割

7.4  视图分割

教学录像:光盘\TM\lx\7\视图分割.exe

在文档/视图结构中,视图用来显示文档中的数据,也可对视图进行分割,从而使视图显示不同的信息,并且可以在视图中嵌入控件,进行更多的操作。

7.4.1  简单视图分割

通过CSplitterWnd类可以实现视图分割,当改变分割窗口的大小时,窗口的客户区将自动重新绘制。首先调用CreateStatic方法创建静态分割的窗体。

语法格式如下:

BOOL CreateStatic( CWnd* pParentWnd, 
int nRows, int nCols, DWORD dwStyle =
WS_CHILD | WS_VISIBLE, UINT nID = AFX_IDW_PANE_FIRST );

CreateStatic方法中的参数说明如表7.1所示。

表7.1  CreateStatic方法中的参数说明

    < xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

   

pParentWnd

分割窗体的父窗体对象,一般为框架窗体对象

nRows

分割窗体的行数,该值不能超过16

nCols

分割窗体的列数,该值不能超过16

dwStyle

设置分割后窗体的样式

nID

设置被创建对象所使用的资源ID

然后调用CreateView方法创建子视图。

语法格式如下:

virtual BOOL CreateView( int row, int col, 
CRuntimeClass* pViewClass, SIZE
sizeInit, CCreateContext* pContext );

CreateView方法中的参数说明如表7.2所示。

表7.2  CreateView方法中的参数说明

   

   

row

子视图所在行

col

子视图所在列

pViewClass

新视图的CRuntimeClass对象

sizeInit

指定新视图的初始大小

pContext

指向CCreateContext结构的指针

例7.2  下面通过实例来实现简单视图分割。(实例位置:光盘\TM\sl\7\2)

步骤如下:

(1)创建一个单文档应用程序。

(2)在框架类的头文件中声明CSplitterWnd类对象m_wndSplitter。

(3)重载框架类的OnCreateClient虚方法,在该方法中分割视图窗口。代码如下:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT 
lpcs, CCreateContext* pContext)
{
m_wndSplitter.CreateStatic(this, 2, 2);     //分割一个2行2列的窗口
//创建相应的子视图
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS
(CDivisionView),CSize(200,200), pContext);
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS
(CDivisionView),CSize(200,200), pContext);
m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS
(CDivisionView),CSize(200,200), pContext);
m_wndSplitter.CreateView(1, 1, RUNTIME_CLASS
(CDivisionView),CSize(200,200), pContext);
return TRUE;          //设置返回值
//return CFrameWnd::OnCreateClient(lpcs,
pContext);  //不调用基类的方法
}
实例的运行结果如图7.10所示。
 
图7.10  简单视图分割
说明:分割的视图可以继承不同的视图类。

【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇7.4.2 划分任意子窗口 下一篇7.2 绘制视图背景

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: