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

news/2024/12/23 14:18:27/

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/news/1557483.html

相关文章

如果模块请求http改为了https,测试方案应该如何制定,修改

作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言! 前言 将模块的请求协…

使用 AI 辅助开发一个开源 IP 信息查询工具:一

本文将分享如何借助当下流行的 AI 工具,一步步完成一个开源项目的开发。 写在前面 在写代码时,总是会遇到一些有趣的机缘巧合。前几天,我在翻看自己之前的开源项目时,又看到了 DDNS 相关的讨论。虽然在 2021 年我写过两篇相对详细的教程&am…

深度学习常见名词概念:Sota、Benchmark、Baseline、端到端模型、迁移学习等的定义

Sota Sota实际上就是State of the arts 的缩写,指的是在某一个领域做的Performance最好的model,一般就是指在一些benchmark的数据集上跑分非常高的那些模型。 **SOTA model:**并不是特指某个具体的模型,而是指在该项研究任务中&…

Spring Cloud Sleuth 分布式链路追踪

介绍分布式链路的思想 一、基本概念 1、Span:Span是链路追踪中的基本工作单元。当一个远程调度任务(如RPC调用)发生时,会产生一个Span。Span通过一个64位ID进行唯一标识,并且包含其他数据信息,如摘要、时间…

静态变量(static)

静态变量(static) 静态全局变量静态局部变量静态成员变量C++ 中,static 关键字可用于不同类型的变量:静态全局变量、静态局部变量和静态成员变量多线程下,静态全局变量、静态局部变量和静态成员变量无论初始化是否安全,访问和修改变量时都需要使用互斥锁或其他同步机制保…

macOS 显示或不显示隐藏文件

在 macOS 中,可以通过以下方法设置是否显示隐藏文件: 使用快捷键临时切换显示隐藏文件 打开 Finder。按下快捷键 Command Shift . (点号键)。 这会立即切换显示/隐藏隐藏文件的状态。 使用终端永久设置 打开 终端&#xff…

【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区

🗺️博客地图 📍方法一、timedatectl 命令 📍方法二、手动链接 /etc/localtime 📍方法三、修改时区变量 在 Linux 系统中,可以通过以下3种方式将系统时区修改为 CST(中国标准时间,GMT8 或称 …

verge下最节省gas的智能合约写法

改什么 把map改成array 比如我们现在有三种优先队列的实现. 当前mainet下最节省gas library HeapMapping {using SafeCast for *;struct Uint256Heap {//键是节点在堆中的位置(索引)//值是该位置的父节点的索引。//通过这个映射,可以快速…