前言
在项目中想实现一个三态树,在网上找了一些例子,主要参考了《三态选择树实现终结者 》,其中作者讲解清晰,非常容易理解。其具体实现的思想是以Windows标准的CTreeCtrl类为基类派生一个类CMutiTreeCtrl,我们可以直接使用,这里主要是对使用的过程做下笔记。
CMutiTreeCtrl功能
如上图所示,当全部子节点选中的情况下,当前节点才被选中(如图示[荆门市]节点),当子节点部分选中时,当前节点处于第三态(如图示[湖北省]节点)当全部子节点未选中时,当前节点处于未选中的状态(如图示[江苏省]节点)。
资源
其中用到的两个文件
实现步骤
图标绘制
在项目中为了和其中用到的其他控件中的树控件风格一致,需要进行自绘图标,如下图所示,它基本使用的是原生态的图标
1. 打开Photoshop软件,新建一个52×13像素的文档,预计其中包含4个图标
注:一般情况下节点图标采用16×16,三态选择图标采用13×13大小比较合适。
三态选择图标对应: 0->无选择钮 1->没有选择 2->部分选择 3->全部选择