- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC++ 混合静态分裂视窗实现
分裂视窗的类型 :
视窗的分裂可分为两种类型,一是动态分裂,二是静态分裂。动 态分裂可
以让使用者通过拖曳分裂方块的使用,将视窗分裂。但是,动态分裂最多只可以
将视窗分裂为2×2个子视窗,不能进行混合分裂视窗,所有子视窗的属性和父
视窗都是一样的,而且子视窗的数据通常来源于同一处。而静态分裂,使用者除
了可以调整子视窗的大小和进行混合分裂视窗外,最多可将视窗分裂为 16×16
个子视窗,每个子视窗可以有各自不同的视图类(CView),各个子视窗显示的数
据可以来自于不同的数据源。不论是要创建动态分裂视窗还是静态 分裂视窗,
都必须要利用MFC的CSplitterWnd类别来完成视窗的分裂。
混合静态分裂视窗的实现
混合分裂视窗是指在子视窗中进行视窗的再分裂。在MFC 的框架下,混合
分裂视窗必须完成三件工作:
⑴在视窗框架类别中定义CSplitterWnd 控件为其属性(数据成员)。
⑵重载视窗框架类别中的OnCreateClient 函数
(CFrameWnd::OnCreateClient ),建立静态分裂子视窗,为静态分裂子视窗填充
视图。
⑶建立维持各子视窗同步更新的机制。
首先,利用MFC AppWizard 生成一个单文档应用程序,在应用程序的
CMainFrame 类别中声明CSplitterWnd 类别的数据成员。
其次,重载CMainFrame 类别中的
OnCreateClient(LPCREATESTRUCT,CCreateContext* pContext)函数。在该函数中
利用CsplitterWnd 类别的构造函数Create Static(CWnd *pParentWnd,int nRows,int
nCols,DWORD dwstyle,UINT nID) 创建混合静态分裂子视窗,即在Create Static
分裂出的子视窗中利用CsplitterWnd 类别的控件再一次分裂视窗。
Create Static 函数的参数含义为:
·pParentWnd 是准备建立静态分裂视窗的视窗框架控件的指针;
·nRows 和nCols 是准备建立静态分裂视窗行数(nRows )与列数(nCols )
因此,创建的静态分裂子视窗个数为nRows × nCols 个,这两个参数最小不
得小于0 ,最大不可超过16;dwstyle 是设定子视窗的形式;nID 静态分裂的代
号(ID ),此代号预设为 AFX_IDW_PANE_FIRST,若静态分裂视窗位于另一个
分裂视窗内时,不可以使用默认值,可以利用CsplitterWnd 类别的成员函数
IdFromRowCol(int row,int col)获得。利用CsplitterWnd 类别的成员函数Create
View (int row,int col,CruntimeClass* pViewClass,SIZE sizeinit,CcreateContext*
pContext) 为静态分裂子视窗填充视图,在将视图与子视窗关联时必须先完成子
视窗的创建。
Create View 函数的参数含义为:
·row 和col 是指定准备建立View 控件的子视窗,其指定的方式是以表示该
子视窗所在的行列位置;
·pViewClass 是指定用于建立子视窗View 控件的View 类别,该类别需要被
声明为Run-Time 类别;
·Sizeini 是View 控件的起始大 小;pContext 是一个指向记录应用程序所使
用的视窗框架控件、Document 控件,以及View 控件之变量的指针,此参数在
CMainFrame::OnCreateClient 函数被调用时传入,再由该函数传递给此函数。
·CsplitterWnd 类别的成员函数 SetColumnInfo(int col,int cxIdeal,int cxMin)
和 SetRowInfo(int row,int cyIdeal,cyMin) 为设置子视窗的宽度和高度,参数
cxIdeal 和cxMin 是指定子视窗的宽度和最小宽度,cyIdeal 和cyMin 是指 定子
视窗的高度和最小高度,在使用这两个函数调整子视窗的大小后还应该使用该类
别的成员函数RecalLayout()重新调整视窗框架的布局。如果要设 定视窗框架里
的活动子视窗,可以通过CsplitterWnd 类别的成员函数SetAct
原创力文档


文档评论(0)