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