窗口分割类——Cxysplitter类的使用

来源:互联网 发布:淘宝拍摄报价单 编辑:程序博客网 时间:2024/05/17 04:41

 现在介绍另一个比较有用的类,我们可以利用它来调整窗口各个界面的大小。以之前在《CtreeCtrl的使用》中实现过的资源管理器为例,对话框中Tree控件和List控件的大小是固定的,我们可以通过使用《窗口排列类——ETSLayout的使用》的方法来实现改变窗口大小时,调整空间大小的问题,但是如果我们不改变窗口大小,如何改变这两个控件所占用的空间呢?此时Cxysplitter类便派上用场了.

step 1

在对话框中需要分割的两个子窗口(控件之间)拖入一个static控件,将它设置为一条线的宽度,这边是我们在下面要用到的分割线,如果想进行垂直方向的拖拉,将这条线这位水平的,否则设为垂直方向的。

step2

添加一个类型为CxSplitterWnd成员变量m_xSplitter(对应进行水平方向拖拉的分割线)。在OnInitDialog中添加如下代码:

SetMinWidth中的两个参数分别是两边控件的最小宽度,就是说在拖拉的时候,不能把相应的控件所占的宽度拖得比这个值还小了。

简单两步,就行了。

当然,如果还需要结合ETSLayout类的话,需要对ETSLayout做一些改进,否则在拖曵过程中会有意外的结果。

1.在ETSLayout中添加一个枚举:

 再为ETSLayoutMgr添加一个最小化控件函数

2.在您自己的对话框中的InitialLayout函数中,只要是有需要进行拉伸的控件,都有必要调用MinisizeCtrl函数,这个函数第一个参数是控件ID,第二个是最小化方向,这个方向和控件的拉伸方向是一致的。比如我的InitialLayout函数是这样写的:

3.最后在OnInitDialog函数的最后中加入

这样的话,您的对话框既可以随着窗口大小改变控件大小,也可以利用分割线,来控制各控件的分割了。