WEB开发网
开发学院软件开发VC 树型控件拖动的完美实现 阅读

树型控件拖动的完美实现

 2006-07-23 11:20:32 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 树型控件用来显示具有一定层次结构的数据项时方便、直观,被广泛地应用在各种软件中,树型控件拖动的完美实现,如资源管理器中的磁盘目录就用的是树型控件,我们在编程中也会经常用到,创建了拖动图象后,调用BeginDrag 函数指定拖动图象的热点位置,但 MFC 中提供的 CTreeCtrl 类

本文示例源代码或素材下载

树型控件用来显示具有一定层次结构的数据项时方便、直观,被广泛地应用在各种软件中,如资源管理器中的磁盘目录就用的是树型

控件,我们在编程中也会经常用到,但 MFC 中提供的 CTreeCtrl 类并不直接支持拖动节点等高级特性,这使我们程序员编程时有很大限

制,又给软件用户带来了一些不便。下面就让我们自己动手来解决这个问题,实现树型控件中节点的拖动。

我们从 CTreeCtrl 中派生了一个类 CXTreeCtrl ,它具有如下的特点:

⑴ 基本拖动的实现。

⑵ 处理无意拖动。

⑶ 能处理拖动过程中的滚动问题。

⑷ 拖动过程中节点会智能展开。

图 1 为示例程序的运行界面。

(图 1)

好,我们来一步一步实现上述功能。

新建一对话框工程,编辑资源,在对话框中加入一树型控件 IDC_TREE ,属性设置如图 2,给该控件添加一个成员变量 m_wndTree ,

类型改为CXTreeCtrl。从 CTreeCtrl 中派生一个类 CXTreeCtrl 。

(图 2)

1、基本拖动的实现

当我们要拖动一个项目时,树型视图控件会给它的父窗口发送TVN_BEGINDRAG通知消息。可以在此处创建表示项目处在拖动操作中

的图象,调用 CreateDragImage 函数产生一副缺省的图象,该函数创建的图象由条目图象和标签文本组成。创建了拖动图象后,调用

BeginDrag 函数指定拖动图象的热点位置,然后调用 DragEnter 函数显示拖动图象。接下来处理 WM_MOUSEMOVE 消息用于更新拖动图

1 2 3  下一页

Tags:控件 拖动 完美

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