MFC制作一个可自由添加删除节点的树(CTreeCtrl)类



微软的MFC提供了强大的界面设计功能,但因为其很多函数过于繁琐,对初学者来说不好上手,而我自己在学习过程中也碰到了很多问题,查了很多文章,在此要特地感谢鸡琢米以及各位在CSDN上些小教程的各位前辈大佬。因此我打算分享一下我的学习经验。

1.第一步在Visual Studio 2017中创建一个对话框工程,并删除原有的3个控件

2.建立完对话框工程后,放置一个Tree Ctrl控件,将Has Button设为TRUE,这样有+-小按钮,再将Has Line勾上,这样就有连接线了,最好在将Line At Root勾上,这样根节点也会有连接线,此时一个最基本的树便完成了。这是别忘了为树关联一个成员变量m_webTree用于之后的程序编写。

3.再放入一个静态文本框,一个按钮,一个Edit Control,静态文本框写上:当前选中的节点。Edit Control用于显示选中的节点和编辑名字,按钮用于确认更改名字(当然也可以不用按钮来确认)。总体效果如下图

4.在完成了上述步骤后,我们就可以开始插入自己的树啦,首先,为了美观,我们需要准备几个小图标,记得用icon转换器转换格式,之后放入res文件夹内,之后,在资源试图,右击XXX.rc项,选择添加资源,之后选择Icon,然后导入,将刚刚保存的小图片导入进来,之后为其设置ID。同时在对话框的.h文件中申明CImageList m_imageList,用于图标的控制。

之后找到系统生成的BOOL CMFC_Study_TreeDlg::OnInitDialog()函数,添加初始化树代码,使得在程序运行的时候可以显示出刚刚设置的树。

在使用图标之前,需要将导入的图标依次加入图标序列,代码如下:

//TODO:在此添加额外的初始化代码
HICON hMyIcon[3];      // 图标句柄数组   

						 // 加载图标
	hMyIcon[0] = theApp.LoadIcon(ID_ICON_0);
	hMyIcon[1] = theApp.LoadIcon(ID_ICON_1);
	hMyIcon[2] = theApp.LoadIcon(ID_ICON_2);

	// 创建图像序列CImageList对象   
	m_imageList.Create(32, 32, ILC_COLOR32, 3, 3);
	// 将三个图标添加到图像序列   
	for (int i = 0; i<3; i++)
	{
		m_imageList.Add(hMyIcon[i]);
	}

	// 为树形控件设置图像序列   
	m_webTree.SetImageList(&m_imageList, TVSIL_NORMAL);
这样一来,便将图标和树关联了起来,之后可以使用
CTreeCtrl::InsertItem函数的一个重载插入树了,该函数申明如下

  HTREEITEM

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值