MFC三态树控件自绘

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

前言

    在项目中想实现一个三态树,在网上找了一些例子,主要参考了《三态选择树实现终结者 》,其中作者讲解清晰,非常容易理解。其具体实现的思想是以Windows标准的CTreeCtrl类为基类派生一个类CMutiTreeCtrl,我们可以直接使用,这里主要是对使用的过程做下笔记。

CMutiTreeCtrl功能

    如上图所示,当全部子节点选中的情况下,当前节点才被选中(如图示[荆门市]节点),当子节点部分选中时,当前节点处于第三态(如图示[湖北省]节点)当全部子节点未选中时,当前节点处于未选中的状态(如图示[江苏省]节点)。

资源

    其中用到的两个文件

MutiTreeCtrl.h

MutiTreeCtrl.cpp

实现步骤

图标绘制


    在项目中为了和其中用到的其他控件中的树控件风格一致,需要进行自绘图标,如下图所示,它基本使用的是原生态的图标

    1. 打开Photoshop软件,新建一个52×13像素的文档,预计其中包含4个图标

   

注:一般情况下节点图标采用16×16,三态选择图标采用13×13大小比较合适。

   三态选择图标对应: 0->无选择钮 1->没有选择 2->部分选择 3->全部选择

一步一步教你实现CTreeCtrl 一步一步教你实现CTreeCtrl   -------BY wojiushi3344    QQ:513670524  转载请说明出处                源代码下载     最近因工作需求,需要自CTreeCtrl。由于原来从来没有自过,开始在网上搜索资料,查询(因此本文有些知识可能不全面,或许还有更好的办法来实现,还请大家多多指教。)经过一段时间的编写,终于写好了 阅读详情

相关推荐

MFC消息反射机制实例

问题描述         最近在做项目中,用到了树控件CTreeCtrl,但是原始的树控件只有两种选择状态,为了能够得到我再其他软件中所见到的的那种树控件,我便打开网页搜了搜,发现了有一种叫做三态的控件,接着查了些资料把三态运用到了项目中。 目的 解决方案 啊

1138

CTreeCtrl

CTreeCtrl 实现自 达到你要的结果。很好的自教程代码

CTreeCtrl---树控件

效果: 1、原理:在CTreeCtrl的派生类CMyTreeCtrl的OnPaint()函数中逐行进行制。 2、要点:                  1)创建CTreeCtrl的派生类CMyTreeCtrl;                  2)为型控件绑定一个控件类型变量CMyTreeCtrl  m_Tree;                  3)设置属性has b

小米的修行之路 4809

C++ MFCCListCtrl、CTreeCtrl滚动条

摘要:VC/C++源码,控件相关,自控件,CListCtrl,滚动条 C++ MFCCListCtrl、CTreeCtrl滚动条源码。#define SCROLLBAR_NORMAL_MINIMUM 45 //经验值,当Scrollbar宽度/高度小于这一数值时需要特殊处理,保证与系统的处理方式一致。编译环境:VS2012,VC6.0不能编译。 运行环境:Windows/Visual C/C++

多态的实现

功能描述:子节点选中时,父节点也选中,父节点取消时,所有子节点也取消,父节点选中时,子节点全部选中,子节点单个取消时,父节点不取消 功能实现: 步骤一:生成一个对话框工程(示例工程CMutiTree)。 步骤二:添加树控件,按照实际需要设置所需的属性。 步骤三:做节点图标和三态选择框图标  一般情况下节点图标采用16×16,三态选择图标采用13×13大小比较合适。 三态选择图标对应:

dongjinfa123的专栏 749

CTreeCtrl

【代码】CTreeCtrl

我的博客 575

MFC学习资料

树控件CTreeCtrl 1)CTreeCtrl 类的使用  http://blog.sina.com.cn/s/blog_6a06aec90100l38i.html 2)树控件的三个结构  http://blog.csdn.net/hdjfeng2009/article/details/4255070

469

VS2015实现CTreeCtrl三态树控件

在当今IT行业中,C++作为一种高性能的编程语言,被广泛应用于开发各种桌面应用程序和游戏。特别是与Visual Studio 2015(简称VS2015)这一强大IDE的结合,为开发者提供了丰富的工具和库来实现复杂功能。本章将简要介绍VS2015与C++项目的开发环境,并概述项目开发的初步流程。Visual Studio 2015是微软推出的一款集成开发环境,它提供了包括代码编辑、调试、性能分析等功能在内的全方位解决方案。

weixin_35752645的博客 870

MFC 树控件含有checkbox的鼠标点击处理

首先要在树控件属性上加上checkbox;或者用代码; MFC鼠标点击消息   afx_msg void OnNMClickTreeUnitshow(NMHDR *pNMHDR, LRESULT *pResult); ON_NOTIFY(NM_CLICK, IDC_TREE_UNITSHOW, OnNMClickTreeUnitshow)  代码控制 void CSelectUnit

问渠哪得清如许 2751

MFC实现形控件TreeCtrl三态选择:让多选交互更直观

MFC实现形控件TreeCtrl三态选择:让多选交互更直观 去发现同类优质开源项目:https://gitcode.com/ 在软件开发中,用户交互的直观性和易用性是决定用户体验的重要因素。本文将向您介绍一个开源项目——MFC实现形控件TreeCtrl三态选择,它能让您的应用程序在处理复杂数据结构时提供更加直观和便捷的操作方式。 项目介绍 MFC实现形控件TreeCtrl三态选择是一个...

gitblog_06713的博客 501

三态选择实现终结者

三态选择实现终结者 作者:yuwei 转自-王佳豪 出处:  2005-11-4 9:33:00 阅读 1132 次 下载本文示例源代码 示例代码运行效果图如下: 在很多情况下,我们经常需要实现的多态选择,如上图所示,当全部子节点选中的情况下,当前节点才被选中(如图示[荆门市]节点),当子节点部分选中时,当前节点处于第三态(如图示[湖北省]节点)当全部子节点

技术成就梦想,知识改变命运 ! 661

MFC拖放树控件CTreeCtrl源码

MFC树控件CTreeCtrl的拖放操作源码,方便快捷高效

VS2008 MFC下支持拖拽的CtreeCtrl控件

看到网上一些支持拖拽的CTreeCtrl控件代码,改进了一些,希望对大家有所帮助,代码里有一部分注释,可以支持节点随意拖拽或者仅支持父节点拖拽功能。

MFC实现形控件TreeCtrl三态选择

MFC支持多选的TreeCtrl控件,可直接拿来使用,实现形控件TreeCtrl三态选择,非常具有参考价值。

MFC 全部自控件 界面库

因为公司之前买的界面库不够好用 后来全部自己自了所有控件 并已全部投入使用 目前是在XImage和FreeImage库的基础上实现半透明背景换肤 也有滚动条这类用GDI制的控件 附demo和文件

Checkboxes in a Tree Control

Checkboxes in a Tree Control2009-07-29 13:15<br />(转自http://www.cppblog.com/mydriverc/articles/28298.html)<br /> Abstract<br />"Checkboxes in a tree control" shows how to add normal and three-state checkboxes to a tree control, and how to get notified when

zztoll的专栏 1021

深入掌握MFC控件:从消息映射到自定义制的实战指南

在Windows桌面开发领域,GUI控件的有效管理是构建稳定应用的基础。其核心原理基于消息驱动架构,通过消息映射机制实现用户交互与程序逻辑的绑定。掌握控件的样式设置、数据交换(DDX/DDV)及自定义制等高级技术,能显著提升软件的可维护性与扩展性,尤其在处理复杂交互和性能优化时价值凸显。这些技术广泛应用于需要长期维护的工业控制软件、金融终端等C++桌面应用场景。本文聚焦于MFC框架,针对开发中常见的控件禁用、坐标变换(如旋转后按右下角旋转)等具体问题,提供从概念到落地的系统性解决方案。

weixin_34342992的博客 307

编成技术8

类别名:编成技术 第1页 第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31

q1q2q3q4ln的专栏-随我一起研究程序 421

VC++ MFCCTreeCtrl的自

另外,如果用户希望完全控制制过程,可能需要使用Owner Draw属性,但这在CTreeCtrl中可能不如其他控件直接支持,因此可能需要更多的自定义工作,比如在OnPaint中完全重控件,但这可能会复杂很多,因为需要管理所有的节点和布局。用户可能需要示例代码,因此需要给出如何重写OnCustomDraw方法,处理不同的阶段,以及如何设置文本颜色、背景颜色,或者使用DrawText等方法进行制。如果用户需要完全自定义每个节点的外观,可能需要禁用默认的制,自己处理所有的制细节,这可能比较复杂。

cqyczj的专栏 1222
上一篇: MFC学习资料
下一篇: Haoop开发环境搭建全套流程
-年轮-
博客等级 码龄14年 9粉丝 29原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值