使用VC6.0实现窗口的任意分割

茜茜公主堡

茜茜公主堡

2016-01-29 11:50

使用VC6.0实现窗口的任意分割,使用VC6.0实现窗口的任意分割

使用VC6.0实现窗口的任意分割
南京邮政局计算机中心 张中庆

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)

一、关于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
展开更多 50%)
分享

猜你喜欢

使用VC6.0实现窗口的任意分割

C语言教程 C语言函数
使用VC6.0实现窗口的任意分割

VC6.0 使用教程

服务器
VC6.0 使用教程

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

vc6.0工具使用的几个技巧

编程语言 网络编程
vc6.0工具使用的几个技巧

VC6.0下利用消息实现内部进程通讯

编程语言 网络编程
VC6.0下利用消息实现内部进程通讯

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在vc6.0中使用GDI+图形函数

编程语言 网络编程
在vc6.0中使用GDI+图形函数

VC6.0使用GDI+的方法及初始化工作

编程语言 网络编程
VC6.0使用GDI+的方法及初始化工作

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

扩展COleDropTarget类来支持任意窗口拖放 - 作者:王加宝

扩展COleDropTarget类来支持任意窗口拖放 - 作者:王加宝

《全民飞机大战》剧情模式攻略详解

《全民飞机大战》剧情模式攻略详解
下拉加载更多内容 ↓