MFC---可拖拽Tree Control的实现及基本初始化流程

本文介绍了如何在MFC中实现可拖拽的Tree Control。首先讲解了Tree Control的基本初始化步骤,包括节点图标的加载和节点的插入。然后,通过自定义CTreeCtrl的子类CDragTreeCtrl,详细阐述了实现拖拽功能的关键函数,包括OnBegindrag、OnMouseMove、OnCancelMode和OnDrop,以及在鼠标抬起后完成节点重新插入的逻辑。
摘要由CSDN通过智能技术生成

MFC的Tree控件,可以说并不是特别友好,我们可以在程序中对其进行初始化;程序执行后,我们仅可以查看,并不能随心所欲的进行节点的拖拽。(废话!否则也不会写这篇博客)

下面首先介绍下Tree Control的基本使用,再展开介绍可拖拽TreeControl的自写类。

一、Tree Control的基本初始化

1.准备工作:各级节点图标的加载

	CImageList m_ImageList;   //声明一个图像列表类的对象,用于存放加载的一系列图像,后面需要进行创建
        CTreeCtrl m_TreeCtrl;     //声明一个CTreeCtrl对象
        HICON hIcon[3];           //图标句柄数组
	hIcon[0] = AfxGetApp()->LoadIcon(IDI_ICON1);  //加载ico文件并将返回句柄存入数组中
	hIcon[1] = AfxGetApp()->LoadIcon(IDI_ICON2);
	hIcon[2] = AfxGetApp()->LoadIcon(IDI_ICON3);
m_ImageList.Create(32,32,ILC_COLOR32,3,3); //创建图像列表的对象(大小为32X32像素)
for (int i = 0; i < 3; i++){m_ImageList.Add(hIcon[i]); //往图像列表中添加图像}m_TreeCtrl.SetImageList(&m_ImageList,TVSIL_NORMAL); //为TreeCtrl设置图像列表

2.各节点(根/子节点)的初始化

	HTREEITEM hRoot;                                                                //根节点的句柄
	HTREEITEM hChild;                                                               //一级子节点的句柄
	HTREEITEM hCChild;                                                              //二级子节点的句柄
	hRoot = m_TreeCtrl.InsertItem(_T("根节点0"),0,0);                                //插入根节点0
	hChild = m_TreeCtrl.InsertItem(_T("一级子节点"), 1, 1, hRoot, TVI_LAST);         //插入一级子节点
	m_TreeCtrl.InsertItem(_T("二级子节点")
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值