VC树型控件拖动的完美实现

树型控件用来显示具有一定层次结构的数据项时方便、直观,被广泛地应用在各种软件中,如资源管理器中的磁盘目录就用的是树型控件,我们在编程中也会经常用到,但 MFC 中提供的 CTreeCtrl 类并不直接支持拖动节点等高级特性,这使我们程序员编程时有很大限制,又给软件用户带来了一些不便。下面就让我们自己动手来解决这个问题,实现树型控件中节点的拖动。

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

⑴ 基本拖动的实现。

⑵ 处理无意拖动。

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

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

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

(图 1)

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

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

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

(图 2)

时间: 2024-10-24 17:38:33

VC树型控件拖动的完美实现的相关文章

VC程序中树型控件节点拖动的完美实现

Visual C++中提供的MFC类CtreeCtrl(树型控件)用来显示具有一定层次结构的数据项时 方便.直观,所以它已经被广泛地应用在各种软件中,如资源管理器中的磁盘目录就用的是 树型控件,我们在编程中也会经常用到这个控件,但是这个控件也有缺陷,那就是它并不直 接支持拖动节点等高级特性,这使得程序员在编程时使用它受到了很大限制,同时又给软件 用户带来了一些不便.为此,本实例通过从 CTreeCtrl 中派生了一个类 CXTreeCtrl ,实现 树型控件中节点的拖动.这个类具有如下的功能:⑴

VC中实现带有背景位图的树型控件

当前许多应用程序都在使用树型控件时为其添加了背景位图,增强的控件的魅力,然而对于Visual C++编程爱好者来说,使用Visual C++MFC提供的树型控件(CTreeCtrl)本身就是一个难点,至于如何使该控件能够带有背景位图,那就更加是一个令人困惑的问题了.本实例对CTreeCtrl类进行了增强,不仅使它带有背景位图,而且解决了在点击树型控件时背景位图闪动的问题,另外,通过在对话框中使用该控件来显示三级目录,演示了树型控件的基本使用方法.下图为程序编译后的运行效果图: 图一.带背景图的树

类似QQ游戏大厅导航的树型控件

在最近的项目中,需要实现一个类似QQ游戏大厅导航树型控件.参考了网络上的部分资料,自己动手制作了一个类CTreeCtrlBT.其界面如下: 实现步骤 第一步:新建一个基于对话框的MFC工程,拖动一棵标准树型控件放于界面之上.添加一个新类CTreeCtrlBT派生自CTreeCtrl. 第二步:为该类添加一些消息响应以及虚函数.其详细作用如下: void PreSubclassWindow(); //用于添加初始化控件的相关信息 WM_SIZE //控件区域发生变化时候的处理 WM_PAINT /

树型控件实现数据库的访问

本人意图将数据库中的内容加入树型控件中,通过建立数据库,再与树型控件相连,实现数据库的访问.查询结构清晰明了,操作方便. 现将其方法阐述如下: 1.建数据库:建立Access数据库,数据库结构和内容见程序包access文件. 2.建立单文档不基于数据库支持的应用程序工程,视图类继承于CFormView,本程序 工程名Ppp,视图类名为CPppView. 3.建立数据库集,数据源采用DAO连接,继承于CDaoRecordset,类名为 CShengSet 4.在Stdafx.h文件中加入支持DAO

VS2008中有无类速一些杀毒软件中三状态树型控件?

问题描述 各位高手,请问在vs2008中有无类似一些杀毒软件中三状态树型控件?即在树型控件中的每一个节点增加一个具有checkedbox功能?在一些介绍中,vs2008增加了大量的控件,但进入vs2008年却没有发现有什么新控件?这是什么原因? 解决方案 解决方案二:Web方面有三态的http://www.intersoftpt.com/

VC++树视控件在多文档中的使用

自从来到我们的论坛以来,认识了很多的朋友和编程的高手,从中学到了很多知识.我看在论坛中有很多人问关于树控的问题.故将树控的一些问题写出来,以供大家参考,同时也作为近一段时间来学习的总结. 本文中主要讲到如何在多文档中加入一个ControlBar,以及如何在ControlBar中加入一个树控方法.这也是软件系统中常用的一种界面,希望能对大家有所帮助. 本例的运行结果如下: 首先,新建一个多文档工程,将Sizecbar.cpp和Sizecbar.h复制到工程的文件加中,并将新文件加入到工程中.这样工

树型控件的处理(完整版)

如何添加数据库中的信息加载到树形控件中?如何遍历控件中的信息?如何对控件中的信息进行增删查改? 数据库设计: 主界面: 代码: using System; using System.Collections.Generic; using System.Windows.Forms; using TreeSolution.BLL; using TreeSolution.Model; namespace 树型测试 {     public partial class Form1 : Form     {

在树型控件中移动鼠标产生字体及颜色的变化

在Windows XP中资源管理器左侧显示目录树结构时,当在项目中移动鼠标的时候,项目标签 的文字的字体和颜色会产生变化,使目录的选择非常醒目.本人在学习制作Windows98的资源管 理器的过程中,加入了相似的功能,其基本思路是:在与TreeCtrl控件关联的类(CDirTreeCtrl) 中重载鼠标移动消息函数,设置相关的文本的颜色参数,在WM_PAINT消息映射函数定义的设备 环境中改变逻辑字体属性(由LOGFONT结构描述)并使用设置的字体,达到项目字体变动的目的. 具体内容如下: 1>

如何在树型控件中使用背景位图

一.引言: 对于TREWVIEW控件的背景位图的实现,目前介绍的文章比较少,有人虽然实现了,但是在点击TREE时,背景闪动比较厉害.本人在参照别人代码的基础上,把它总结一下,同时解决了这个背景闪烁的问题.目前FLASHGET1.3版也实现了TREEVIEW的背景位图.大家可以参照一下. 本文程序运行效果如下图: 二.原理: 因为WINDOWS标准TREEVIEW控件不支持背景位图,所以如果需要设置背景位图就需要先让其在内存CDC对象上对TREEVIEW缺省绘图,然后在选择背景位图,与缺省位图合成