第6节 树形控件
树形控件(CTreeCtrl)用于存储具有多层分类关系的数据,例如,总公司下面有多个分公司,而每个分公司下面有多个部门,每个部门下面又有多名员工等。树形控件包括“有限层次”和“无限层次”两种用法,例如,公司员工分类就是“有限层次”的使用方法。“无限层次”的树形控件并非是树的深度无穷大,而是树的深度对于开发者是未知的。例如,资源管理器和注册表管理器中,树形控件的深度对于开发者是未知的,在不同的计算机中以上管理器树形控件的深度是不确定的。
创建一个工程名为“tr”的对话框程序,用于演示有限层次的树形控件的使用方法。
1)在主对话框中添加一些控件,如图9-33所示。

图9-33 编辑主对话框资源
2)修改控件属性,见表9-10。
表9-10 主对话框的控件属性

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

图9-34 添加控件型关联变量
4)修改主对话框类的头文件,增加一些成员变量和函数以及结构体SInfo以备调用。

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

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

(https://www.daowen.com)

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

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


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

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


11)编译并运行,测试代码,如图9-36所示。
分别对不同部门的员工信息编辑并保存,再选择不同的部门浏览。即使是重启进程,各个部门的员工信息都按分类保存完好。

图9-36 查看运行结果