- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、关于CSplitterWnd类-Read.doc
一、关于CSplitterWnd类 我们在使用CuteFtp或者NetAnt等工具的时候,一般都会被其复杂的界面所吸引,在这些界面中窗口被分割为若干的区域,真正做到了窗口的任意分割。?那么我们自己如何创建类似的界面,也实现窗口的任意的分割呢??在VC6.0中这就需要使用到CSplitterWnd类。CSplitterWnd看上去像是一种特殊的框架窗口,每个窗口都被相同的或者不同的视图所填充。当窗口被切分后用户可以使用鼠标移动切分条来调整窗口的相对尺寸。虽然VC6.0支持从AppWizard中创建分割窗口,但是自动加入的分割条总是不能让我们满意,因此我们还是通过手工增加代码来熟悉这个类。? CSplitterWnd的构造函数主要包括下面三个。?BOOL?Create(CWnd*?pParentWnd,int?nMaxRows,int?nMaxCols,SIZE?sizeMin,CCreateContext*?pContext,DWORD?dwStyle,UINT?nID); 功能描述:该函数用来创建动态??分窗口。?参数含义:pParentWnd?切分窗口的父框架窗口。?????nMaxRows,nMaxCols是创建的最大的列数和行数。?sizeMin是窗格的现实大小。?pContext?大多数????情况下传给父窗口。?nID是字窗口的ID号.?BOOL?CreateStatic(CWnd*?pParentWnd,int?nRows,int?nCols,DWORD?dwStyle,UINT?nID)? 功能描述:用来创建切分窗口。?参数含义同上。?BOOL?CreateView?(int?row,int?col,CruntimeClass*?pViewClass,SIZE?sizeinit,CcreateContext*?pContext); 功能描述:为静态切分的窗口的网格填充视图。在将视图于切分窗口联系在一起的时候必?须先将切分????窗口创建好。? 参数含义:同上。 从CSplitterWnd源程序可以看出不管是使用动态创建Create还是使用静态创建CreateStatic,在函????数中都调用了一个保护函数CreateCommon,从下面的CreateCommon函数中的关键代码可以看出创建????CSplitterWnd的实质是创建了一系列的MDI子窗口。?DWORD?dwCreateStyle?=?dwStyle??~(WS_HSCROLL|WS_VSCROLL);if?(afxData.bWin4)?????dwCreateStyle?=?~WS_BORDER;?//create?with?the?same?wnd-class?as?MDI-Frame?(no?erase?bkgnd)?if?(!CreateEx(0,?_afxWndMDIFrame,?NULL,?dwCreateStyle,???????????0,?0,?0,?0,pParentWnd-m_hWnd,?(HMENU)nID,?NULL))????????return?FALSE;?//?create?invisible??????????? 二、创建嵌套分割窗口? 2.1创建动态分割窗口 动态分割窗口使用Create方法。下面的代码将创建2x2的窗格。?m_wndSplitter.Create(this,2,2,CSize(100,100),pContext); 但是动态创建的分割窗口的窗格数目不能超过2x2,而且对于所有的窗格,都必须共享同一个视图,所受????的限制也比较多,因此我们不将动态创建作为重点。我们的主要精力放在静态分割窗口的创建上。? 2.2创建静态分割窗口 与动态创建相比,静态创建的代码要简单许多,而且可以最多创建16x16的窗格。不同的窗格我们可以使????用CreateView填充不同的视图。? 在这里我们将创建CuteFtp的窗口分割。CuteFtp的分割情况如下:?CCuteFTPView?CView2?CView3?CView4? 创建步骤:? ▲?在创建之前我们必须先用AppWizard生成单文档CuteFTP,生成的视类为?CCuteFTPView.同时在增加????三个视类或者从视类继承而来的派生类CView2,CView3?CView4.? ▲?增加成员:? 在Cmainfrm.h中我们将增加下面的代码:?CSplitterWnd?wndSplitter1;CSplitterWnd?wndSplitter2; ▲?重载CMa
文档评论(0)