MFC/C++学习系列之简单记录11------树控件的使用
- 前言
- CTreectrl使用
-
- 界面设置
- 代码使用
- 简单设计
- 其他使用
- 注意!
- 总结
前言
在之前的界面设计中使用得很少,但是可以学习一下,以备不时之需!
CTreectrl使用
界面设置
在工具箱中选择Tree Control控件。
可以注意一下几点:
- 具有按钮:节点旁边显示按钮。
- 具有行:树形控件中的每个节点都像表格中的一行那样显示。
- 行在根处:在根节点处显示子节点,并且正确地插入根节点和其子节点。
- 整行选择:使得当用户点击树形控件的任何地方时,整个行都会被选中。
以上的属性使用较多,需要了解。
代码使用
cpp
HTREEITEM root= m_tree.InsertItem(TEXT("根节点"), 0, 0, NULL);
HTREEITEM root1= m_tree.InsertItem(TEXT("父节点"), 1, 1, root);
HTREEITEM root2 = m_tree.InsertItem(TEXT("子节点"), 2, 2, root1);
- m_tree是界面拖动了控件后添加成员变量。
- TEXT("根节点"):根节点的文本。
- HTREEITEM 是一个用于标识树形控件中的一个句柄,用于引用树形控件中的特定节点,以便进行各种操作,如插入子节点、删除节点、获取节点信息等。
上述的代码也是一层嵌入一层。根节点定义后,在根节点后嵌入父节点。
简单设计
查询了一些资料,发现都可以把文字编成图标。利用工程中现有的图标,把文字替换掉。
cpp
HICON icon[3];
icon[0] = AfxGetApp()->LoadIconW(IDR_MAINFRAME);
icon[1] = AfxGetApp()->LoadIconW(IDR_MAINFRAME);
icon[2] = AfxGetApp()->LoadIconW(IDR_MAINFRAME);
image_list.Create(30, 30, ILC_COLOR32, 4, 4);
image_list.Add(icon[0]);
image_list.Add(icon[1]);
image_list.Add(icon[2]);
m_tree.SetImageList(&image_list,TVSIL_NORMAL);
- 设置图像列表:使用到HICON类型的数组,用于存储图标的句柄。IDR_MAINFRAME是资源标识符,也就是项目本身自带的图标资源。
- CImageList对象,并调用Create方法初始化图像列表。把图标设置到列表中,可以设置宽度、高度、数量等。
- SetImageList就是将图标设置到节点中。
通过上述代码,就可以将文本替换成图标显示了。具体效果如下:
其他使用
- GetCount():返回树形控件中的项目总数。
- GetSelectedItem():获取当前选中的节点句柄。
- SelectItem():设置默认选项。
注意!
cpp
CImageList image_list;
这句话需要放置在.h文件中,才能将图标显示出来!作为成员属性进行使用了。
总结
学会了设置图标类型的树控件!