MFC/C++学习系列之简单记录11——树控件的使用

server/2024/12/27 4:57:15/

MFC/C++学习系列之简单记录11——树控件的使用

  • 前言
  • CTreectrl使用
    • 界面设置
    • 代码使用
    • 简单设计
    • 其他使用
    • 注意!
  • 总结


前言

在之前的界面设计中使用得很少,但是可以学习一下,以备不时之需!


CTreectrl使用

界面设置

在这里插入图片描述
在工具箱中选择Tree Control控件。
可以注意一下几点:

  • 具有按钮:节点旁边显示按钮。
  • 具有行:树形控件中的每个节点都像表格中的一行那样显示。
  • 行在根处:在根节点处显示子节点,并且正确地插入根节点和其子节点。
  • 整行选择:使得当用户点击树形控件的任何地方时,整个行都会被选中。
    以上的属性使用较多,需要了解。

代码使用

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 是一个用于标识树形控件中的一个句柄,用于引用树形控件中的特定节点,以便进行各种操作,如插入子节点、删除节点、获取节点信息等。
    上述的代码也是一层嵌入一层。根节点定义后,在根节点后嵌入父节点。
    在这里插入图片描述

简单设计

查询了一些资料,发现都可以把文字编成图标。利用工程中现有的图标,把文字替换掉。

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():设置默认选项。

注意!

CImageList image_list;

这句话需要放置在.h文件中,才能将图标显示出来!作为成员属性进行使用了。


总结

学会了设置图标类型的树控件!


http://www.ppmy.cn/server/153531.html

相关文章

神经网络-VggNet

2014年VggNet被推出,获取了ILSVRC2014比赛分类项目的第二名,第一名是GoogleNet,该网络在下节介绍,本节主要介绍VggNet。 VggNet可以称为是一个家族,根据层数的不同包括了A、A-LRN、B、C、D等网络结构,其中…

Java:基于springboot妇幼健康管理系统

作者主页:IT 小舟 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本妇幼健康管理系统分为管理员、用户、医生三个权限。 管理员可以管理用户、医生的基本信息内容,可以管理药物信息以及患者预约信息等操作…

Java:187 基于Springboot的校园点餐系统

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 ​ 系统为顾客线上订餐提供便利。主要实现了顾客模块和管理员模块两大部分,这两大模块具体功能如下: (1&#xf…

halcon3d disparity_image_to_xyz非常重要的算子及使用条件

双目立体视觉中最重要的一步 通过双目立体视觉行成disparityimage以后,如何或得点云。这个问题困扰了我很久,在形成视差图后,怎么把获得的结果,返回到左相机视图中,然后形成点云,这里最重要的就是这个算子disparity_image_to_xyz Disparity : 视差图,可以通过binocula…

【Golang 面试题】每日 3 题(二)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…

【LuaFramework】服务器模块相关知识

目录 一、客户端代码 二、本地服务器代码 三、解决服务器无法多次接收客户端消息问题 一、客户端代码 连接本地服务器127.0.0.1:2012端口(如何创本地服务器,放最后说),连接成功后会回调 协议号Connect是101,其他如下…

【ES6复习笔记】rest参数(7)

什么是 rest 参数? rest 参数是 ES6 引入的一个特性,它允许我们将一个不定数量的参数表示为一个数组。使用 rest 参数可以更方便地处理函数的参数,尤其是在参数数量不确定的情况下。 如何使用 rest 参数? 在函数定义中&#xf…

Debezium日常分享系列之:Debezium Engine

Debezium日常分享系列之:Debezium Engine 依赖打包项目在代码中输出消息格式消息转换消息转换谓词高级记录使用引擎属性异步引擎属性数据库模式历史属性处理故障 Debezium连接器通常通过部署到Kafka Connect服务来运行,并配置一个或多个连接器来监视上游…