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("二级子节点")