关于MFC中树形控件(CTreeCtrl)复选框(CheckBox)的显示一致性解决方案
树形控件在Windows系统中是很常见的控件,例如资源管理器左侧的窗口中就有用来显示目录的树形视图。树形视图中以分层结构显示数据,每层的缩进不同,层次越低缩进越多。树形控件的节点一般都由标签和图标两部分组成,图标用来抽象的描述数据,能够使树形控件的层次关系更加清晰。
1.关于MFC树形控件基础知识
参见: VS2010/MFC编程入门之三十(常用控件:树形控件TreeControl 上)http://www.jizhuomi.com/software/200.html
参见: VS2010/MFC编程入门之三十一(常用控件:树形控件TreeControl 下)http://www.jizhuomi.com/software/203.html
2.关于树形控件复选框显示一致性问题解决方案
(1)问题描述:使用树形控件可以清晰的显示出数据项的组织结构,同时也可以利用树形控件的复选框来表示数据项的某种属性状态。在通常情况下,复选框应具有如下显示一致性状态:
① 选中一个节点时,其所有关联子节点应均设置为选中状态;
② 选中一个节点时,若其所有子节点均为选中状态,则其父节点也应设置为选中状态,否则设置父节点为非选中状态;
但是,在MFC中关于复选框状态的获取和设置需要我们自己通过代码进行控制,同时由于数据组织的不确定性,使得复选框的显示一致性很难实现,以下为该情况提供了一种可能的解决方案。
(2)解决方案
① 建立一个基于对话框的MFC应用程序(MFCTest),在对话框上拖建一个树形控件并关联控件变量:
② 为树形控件添加节点
③ 为树形控件添加事件响应
④关于复选框状态一致性解决函数