首页 理论教育树形控件的深度与开发者无关

树形控件的深度与开发者无关

【摘要】:“无限层次”的树形控件并非是树的深度无穷大,而是树的深度对于开发者是未知的。例如,资源管理器和注册表管理器中,树形控件的深度对于开发者是未知的,在不同的计算机中以上管理器树形控件的深度是不确定的。创建一个工程名为“tr”的对话框程序,用于演示有限层次的树形控件的使用方法。9)在类向导中为树形控件添加TVN_SELCHANGED消息反射函数,如图9-35所示。

树形控件(CTreeCtrl)用于存储具有多层分类关系的数据,例如,总公司下面有多个分公司,而每个分公司下面有多个部门,每个部门下面又有多名员工等。树形控件包括“有限层次”和“无限层次”两种用法,例如,公司员工分类就是“有限层次”的使用方法。“无限层次”的树形控件并非是树的深度无穷大,而是树的深度对于开发者是未知的。例如,资源管理器和注册表管理器中,树形控件的深度对于开发者是未知的,在不同的计算机中以上管理器树形控件的深度是不确定的。

创建一个工程名为“tr”的对话框程序,用于演示有限层次的树形控件的使用方法。

1)在主对话框中添加一些控件,如图9-33所示。

978-7-111-46378-8-Chapter09-73.jpg

图9-33 编辑主对话框资源

2)修改控件属性,见表9-10。

表9-10 主对话框的控件属性

978-7-111-46378-8-Chapter09-74.jpg

3)在类向导中为树形控件和列表控件建立关联变量,如图9-34所示。

978-7-111-46378-8-Chapter09-75.jpg

图9-34 添加控件型关联变量

4)修改主对话框类的头文件,增加一些成员变量和函数以及结构体SInfo以备调用。

978-7-111-46378-8-Chapter09-76.jpg

5)修改对话框初始化函数OnInitDialog的代码。

978-7-111-46378-8-Chapter09-77.jpg

6)在主对话框类的源文件中,修改普通成员函数的代码。

978-7-111-46378-8-Chapter09-78.jpg

978-7-111-46378-8-Chapter09-79.jpg(www.chuimin.cn)

978-7-111-46378-8-Chapter09-80.jpg

7)使用类向导建立“添加员工”按钮的消息映射函数,并修改代码。

978-7-111-46378-8-Chapter09-81.jpg

8)使用类向导建立“保存”按钮的消息映射函数,并修改代码。

978-7-111-46378-8-Chapter09-82.jpg

978-7-111-46378-8-Chapter09-83.jpg

9)在类向导中为树形控件添加TVN_SELCHANGED消息反射函数,如图9-35所示。

978-7-111-46378-8-Chapter09-84.jpg

图9-35 添加TVN_SELCHANGED消息反射函数

10)修改消息反射函数OnSelchangedTree的代码,当选择不同的节点时更新列表中的员工信息。

978-7-111-46378-8-Chapter09-85.jpg

978-7-111-46378-8-Chapter09-86.jpg

11)编译并运行,测试代码,如图9-36所示。

分别对不同部门的员工信息编辑并保存,再选择不同的部门浏览。即使是重启进程,各个部门的员工信息都按分类保存完好。

978-7-111-46378-8-Chapter09-87.jpg

图9-36 查看运行结果