WEB开发网
开发学院软件开发VC 三态选择树实现终结者 阅读

三态选择树实现终结者

 2007-10-05 20:22:20 来源:WEB开发网   
核心提示:工程中,在CMutiTreeDlg类的头文件中增加对[MutiTreeCtrl.h]的包含,三态选择树实现终结者(2),此时工程中增加了CMutiTreeCtrl类,#include "MutiTreeCtrl.h"步骤五:用ClassWizard在CmutiTreeDlg中创建一个树控件CTree

工程中,在CMutiTreeDlg类的头文件中增加对[MutiTreeCtrl.h]的包含,此时工程中增加了CMutiTreeCtrl类。

#include "MutiTreeCtrl.h"步骤五:用ClassWizard在CmutiTreeDlg中创建一个树控件CTreeCtrl的对象m_TripleTree,更改该对象为上面步骤四加入的CMutiTreeCtrl类的对象。

步骤六:在CMutiTreeDlg类中定义两个CImageList 类的对象,用于加载CMutiTreeCtrl所需要的节点图标列表和三态选择框图标列表。

在CMutiTreeDlg类的头文件中:

CImageList m_imgList;
CImageList m_imgState;
在对话框的初始化函数中:m_imgState.Create(IDB_BITMAP_STATE,13, 1, RGB(255,255,255));
m_imgList.Create(IDB_BITMAP_LIST,16, 1, RGB(255,255,255));
    
m_TripleTree.SetImageList(&m_imgList,TVSIL_NORMAL);
m_TripleTree.SetImageList(&m_imgState,TVSIL_STATE);
完成以上六步操作后,编译、运行,用键盘空格键或鼠标单击CheckBox改变其状态,您将看到不需要再增加任何代码,已经实现了三态选择树的功能。如果需要隐藏某些选择框,如根节点的选择框,只需要设置对应的节点状态为0即可:m_TripleTree.SetItemState( hRoot, INDEXTOSTATEIMAGEMASK(0),
TVIS_STATEIMAGEMASK );
上述代码将设置根节点不显示三态选择框。

我具体实现的思想是以Windows标准的CTreeCtrl类为基类派生一个类CMutiTreeCtrl,截获键盘和鼠标点击CheckBox的事件,在此消息响应函数中,更改CheckBox的状态,并搜索子节点、兄弟节点和父节点,更改其状态与上述逻辑一致。方法如下介绍:

上一页  1 2 3 4 5  下一页

Tags:选择 实现 终结者

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接