树型控件用来显示具有一定层次结构的数据项时方便、直观,被广泛地应用在各种软件中,如资源管理器中的磁盘目录就用的是树型控件,我们在编程中也会经常用到,但MFC 中提供的 CTreeCtrl 类并不直接支持拖动节点等高级特性,这使我们程序员编程时有很大限制,又给软件用户带来了一些不便。下面就让我们自己动手来解决这个问题,实现树型控件中节点的拖动。
我们从 CTreeCtrl 中派生了一个类 CXTreeCtrl ,它具有如下的特点:
⑴ 基本拖动的实现。
⑵ 处理无意拖动。
⑶ 能处理拖动过程中的滚动问题。
⑷ 拖动过程中节点会智能展开。
图1、为示例程序的运行界面。
(图 1) |
好,我们来一步一步实现上述功能。
新建一对话框工程,编辑资源,在对话框中加入一树型控件 IDC_TREE ,属性设置如图 2,给该控件添加一个成员变量 m_wndTree ,类型改为CXTreeCtrl。从 CTreeCtrl 中派生一个类 CXTreeCtrl 。
(图 2) |