C++ 控件之 CImageList

MFC高级控件之 图像列表控件 图像列表控价与其它控件不同,不能从工具箱的控件面板添加到程序界面中。图像列表控件是一个类:CImageList。要使用该控件,需通过编辑代码实现。该控件用以存储大小相同的一组图像。常使用图像列表控件来为工具条、树状控件、列表控价等的内容设置图标。当然也用可以图像列表将图像绘制到程序中。本文将详细介绍图像列表控件,并以一个的实例演示如何使用图像列表。 阅读详情
图像列表控制(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利用WINDOWS32位应用程序接口函数API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。图像列表控制提供了控制图像列表的基本方法,这些方法在WINDOWS95及以后版本才能实现。 (一)图像控制的对象结构 1、图像控制的数据成员 m_hImageList 连接图像对象的控制句柄 2、图像控制的建立方法 CimageList&imageList建立图像控制对象结构 Create 初始化图像列表并绑定对象 图像控制的建立方法如下: BOOL Create( int cx, int cy, UINT nFlags, int nInitial, int nGrow ); BOOL Create( UINT nBitmapID, int cx, int nGrow, COLORREF crMask ); BOOL Create( LPCTSTR lpszBitmapID, int cx, int nGrow, COLORREF crMask ); BOOL Create( CImageList& imagelist1, int nImage1, CImageList& imagelist2 ,int nImage2,int dx, int dy ); 其中各项参数的含义为:cx定义图像的宽度,单位为象素;cy定义图象的高度,单位为象素; nFlags确定建立图像列表的类型,可以是以下值的组合:ILC_COLOR、ILC_COLOR4、ILC_COLOR8、ILC_COLOR16、 ILC_COLOR24、ILC_COLOR32、ILC_COLORDDB和ILC_MASK;nInitial用来确定图像列表包含的图像数量; nGrow用来确定图像列表可控制的图像数量。 NbitmapID 用来确定图像列表联系的位图标志值;crMask表示颜色屏蔽位; LpszBitmapID 用来确定包含位图资源的标识串; imagelist1 指向图像列表控制对象的一个指针;nImage1图像列表1中包含的图像数 量;imagelist2指向图像列表控制对象的一个指针;nImage2图像列表2中包含的图像数量;dx表示以象素为单位的图像宽度;dy表示以象素为单位的图像高度。 同样,图像控制的建立也包括两个步骤,首先建立图像列表结构,然后建立图像列表控制。 3、图像控制的属性类 图像控制的属性类包括返回m_hImageList.控制句柄GetSafeHandle、取得图像列表中的图像数量GetImageCount、设置图像列表的背景颜色SetBkColor、取得图像列表的背景颜色SetBkColor和取得图像的有关信息SetBkColor。 4、图像控制的操作方法 图像控制的操作方法包括将一个图像列表绑定到一个对象上Attach、将对象上的图像列表解除绑定并返回句柄Detach、删除一个图像列表DeleteImageList、将一个图像增加到图像列表中Add和将一个图像从图像列表中删除Remove等。 (二)图像控制的应用技巧 对于图像控制,同样不能单独使用,必须与列表控制、树控制和标签控制相互结合应用,下面分别介绍其具体应用技巧。 1、图像控制在列表控制中的应用技巧 ①设置图像控制CListCtrl::SetImageList的调用格式如下: CImageList* SetImageList( CImageList* pImageList, int nImageList ); 其返回值是指向前一个图像列表控制的一个指针,如果不存在前一个图像列表则为NULL;其中参数pImageList是指向图像列表的标识,nImageList是图像列表的类型,可以是如下值: LVSIL_NORMAL 用大图标方式进行图像列表; LVSIL_SMALL 用小图标方式进行图像列表; LVSIL_STATE 以图像状态进行图像列表; ②取得图像控制CListCtrl::GetImageList的调用格式如下: CImageList* GetImageList( int nImageList ) const; 其返回值为指向图像列表控制的指针,其中nImageList用来确定取得返回值的图像列表的 值,其取值与设置图像列表函数相同。 ③图像控制在列表控制中的应用示例 CImageList Cil1,Cil2; //定义大小图标像列表 CVCLISTApp *pApp=(CVCLISTApp *)AfxGetApp();//取得列表控制程序 Cil1.Create(32,32,TRUE,2,2); //建立32位图像控制 Cil1.Add(pApp->LoadIcon(IDI_GJ));//增加选中状态图像 Cil1.Add(pApp->LoadIcon(IDI_XS));//增加非选中状态图像 Cil2.Create(16,16,TRUE,2,2); //建立16位图像控制 Cil2.Add(pApp->LoadIcon(IDI_GJ));//增加选中状态图像 Cil2.Add(pApp->LoadIcon(IDI_XS));//增加非选中状态图像 m_ListCtrl.SetImageList(&Cil1,LVSIL_NORMAL);//设置大图标控制 m_ListCtrl.SetImageList(&Cil2,LVSIL_SMALL);//设置小图标控制 2、图像控制在树控制中的应用技巧 ①设置图像控制CTreeCtrl::SetImageList的调用格式如下: CImageList* SetImageList( CImageList * pImageList, int nImageListType ); 其返回值为指向前前一个图像列表的指针,否则为NULL;参数pImageList为指向图像列表的标识,如果pImageList为NULL则所有的图像都将从树控制中被清除;nImageListType为图像列表设置的类型,可以是如下值之一: TVSIL_NORMAL 设置正常图像列表,其中包括选中和非选中两种图标; TVSIL_STATE 设置图像列表状态,指用户自定义状态; ②取得图像控制CTreeCtrl::GetImageList的调用格式如下: CImageList* GetImageList( UINT nImage ); 如果调用成功则返回图像列表控制指针,否则为NULL;nImage为取得返回值的图像列表类型,其取值和取得图像列表控制完全相同。 ③图像控制在树控制中的应用示例 CImageList Cil1,Cil2;//定义大小图标像列表 CVCTREEApp *pApp=(CVCTREEApp *)AfxGetApp();//获取应用程序指针 Cil1.Create(16,16,ILC_COLOR,2,2);//建立图像控制 Cil1.Add(pApp->LoadIcon(IDI_PM));//增加选中状态图像 Cil1.Add(pApp->LoadIcon(IDI_CJ));//增加非选中状态图像 m_TreeCtrl.SetImageList(&Cil1,TVSIL_NORMAL);//设置图像控制列表 然后在树控制的结构定义中进行如下设置: TCItem.item.iImage=0; //设置未选中图像索引号 TCItem.item.iSelectedImage=1;//设置选中时图像引号 3、图像控制在标签控制中的应用技巧 ①设置图像控制CTabCtrl::SetImageList的调用格式 CImageList * SetImageList( CImageList * pImageList ); 其返回值为指向前一个图像列表的指针,如果不存在前一个图像列表则为NULL;pImageList为标识TAB控制的图像列表指针。 ②取得图像控制CTabCtrl::GetImageList的调用格式 HIMAGELIST GetImageList() const; 其返回值为指向TAB控制的图像列表指针,如果调用不成功则为NULL。 其应用技巧较前两种更加简单,这里不再赘述。
CImagList 使用详解 2009-09-26 21:44   图像列表控件(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,(可以把这些图标看成是以数组方式存储的),图像列表通常由大图标或位图构成,其中包含透明位图模式(实际上,所有的再一个图像列表中的图标都被存储在一个屏幕设备的位图中)。可以利用windows API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像邓 阅读详情

相关推荐

#pragma once 2023/9/24 上午11:39:05

2023/9/24 上午11:39:05 #pragma once #define _OWNER_DRAWN_TREE // 自绘CTreeCtrl,可支持背景图片显示功能 class CSWTreeCtrl : public CTreeCtrl { DECLARE_DYNAMIC(CSWTreeCtrl) // 成员私有结构定义 // 构造/析构函数 public: CSWTreeCtrl(); virtual ~CSWTreeCtrl(); // 私有成员变量 priv

我的博客 268

ImageList00

<br />1.综述<br />在MFC中CImageList类封装了图像列表控件的功能,图像列表是一个具有相同大小的图像(可以是不同类型)的集合,其主要用于应用程序中大规模图标的存储。该控件是不可见的,通常与其它如CListBox,CComboBox,CComboBoxEx,CTabCtrl以及CTreeCtrl一起使用,为他们提供图标资源。<br />图象的每个集合中均以0为图象索引基数,可以把这些图标看成是以数组方式存储的,图像列表通常由大图标或位图构成,其中包含位图模式。实际上,所有的在同一个图象列

uda1985的专栏 1039

CImagelist 基本用法

CImagelist 基本用法 CImagelist 基本用法 CImagelist 基本用法

CImageList 图像列表

nGrow 具体解释:图像列表空间不够而继续添加image时,将按照nGrow继续分配空间,设计时根据具体情况设置合适的值,避免内存频繁的改变图像列表,因为过度频繁会使系统记忆体碎片化。但参数到底设置多少,还是要根据实际的情况设置合理的值,一要避免浪费空间,又要避免频繁的对Image容器进行resize操作。nGrow:当初始分配的图像个数不够的时候,新增一个图片时,指定图象列表能增加的新图象个数(难理解);nFlags:创建图像列表的类型,包括4/8/16/24/32/位色;

zxf347085420的博客 958

VC++/MFC 的 CImageList 绘制背景透明的位图

文章:https://blog.youkuaiyun.com/maoyeahcom/article/details/103827098

CListCtrl的图片格式 关联CImageList,显示缩略图

将CListCtrl设置成图片格式,然后关联了CImageList,显示图片。其中用了GDI+来缩小图片到指定大小。

MFC Tab 控件添加 icon 图标

1. 将 icon 图片copy 到工程目录下的 res 文件夹内并导入 2. 在对话框 .h 文件中添加 CImageList 对象如下 CImageList m_TabImageList; 3. 在对话框 .cpp 文件 OnInitDialog 函数中添加如下代码 注意: InsertItem 函数必须使用有 3 个参数的重载函数,第 3 个参数即表示使用哪个图标。

phenixyf的专栏 1299

FICO F.27 Customer statement 打印

需求,定制化打印,替换标准的F.27打印 类似于采购订单的打印,但是略有不同,查阅资料之后步骤如下: T-code F.27 is SAP standard program to produce customer/vendor correspondence (letter). Correspondence Type is used to specify the related printing program and form for the particular correspondence. SAP

IamRunjiang的博客 1963

CTreeCtrl 树控件使用

设置属性 设置线、按钮 设置图片集合 setImageList(CImageList* list , 正常显示的宏) list准备 create(30,30, 32位色,4,4) add (HICON) 添加节点 InsertItem( 节点名称,显示图片,选中后显示的图,父节点) 在xxDlg.cpp的OnInitDialog()函数中添加以下代码 /*treeCtrl控件使用*/ // 1 设置资源 //准备HICON HICON icon[4]; icon[0] = AfxGe.

Scarlett的博客 711

『与善仁』Appium基础 — 19、元素定位工具之UI Automator Viewer

文章目录(一)uiautomatorviewer定位工具1、uiautomatorviewer介绍2、uiautomatorviewer工具打开方式3、uiautomatorviewer布局介绍4、uiautomatorviewer工具的使用 之前我们在做web页面自动化的时候就说过,元素定位是页面自动化的第一步。 同理App自动化测试的第一步,也是元素的定位。 在APP中定位元素的话,需要借助一些元素定位工具。 APP中的元素定位工具大致有三种: uiautomatorviewer Appium Ins

繁华似锦Fighting 1520

华为Watch的ECG功能技术分析

华为Watch的ECG(心电图)功能通过硬件传感器、算法优化和医疗认证的结合,实现了对心脏电活动的监测和房颤(AFib)等心律失常的预警。采用医疗级ECG模拟前端芯片(AFE),如TI(德州仪器)的ADS1292R等,支持低噪声、高采样率(通常≥200Hz)。结合PPG(光学心率)数据交叉验证,提高检测可靠性(如ECG和PPG心率不一致时触发警告)。通过RR间期变异性判断心律是否规则,识别房颤(AFib)的典型特征(如不规则不规则心律)。结合加速度计数据,识别手臂运动导致的信号失真,动态调整算法参数。

xu_wenming的博客 6437

列表框显示图标问题

static CImageList ProcessImg; 定义在头文件 str->InsertItem(0, pe32.szExeFile, imageIndex); imageIndex对应图标索引 0 1 2 3这样排列 hImageList = (HIMAGELIST)::SHGetFileInfo(tsFileDosPath, 0, &shfil...

dengjiatao9832的博客 122

【Clickhouse从入门到精通】第60篇:ClickHouse生态总结与未来展望

ClickHouse系列收官总结 本文作为《ClickHouse从入门到精通》系列的第60篇收官之作,系统回顾了整个系列的知识体系。文章从基础概念到高级应用,全面梳理了ClickHouse的核心技术: 知识体系:完整回顾了60篇文章的知识图谱,包括列式存储原理、MergeTree引擎家族、分布式架构等核心内容 生态工具:详细盘点了ClickHouse的企业版工具、运维监控、数据集成和可视化方案 版本演进:分析了从21.x到24.x的主要版本特性升级 未来趋势:展望了向量化引擎、湖仓一体、AI集成等发展方向

xyghehehehe的专栏 439

MFC之树形控件25

1 树形控件 先了解相关知识。 1)创建基于对话框的项目。 2)删除对话框原有的内容,添加树形控件TreeControl。 3)右击树形控件属性,然后添加相应属性。 4)在资源视图里面右击icon文件夹,添加资源,选择icon导入预先准备好的图片。 5)由于我们需要在节点中显示图片,所以我们需要准备一个成员变量的图片列表。 CImageList m_imageList; 6)关联属性控件。右击树形控件添加Control变量即可。 7)编写代码。一般树形控件的初始化代码都是放在对话框的初始化函数On

weixin_44517656的博客 480

医疗工具识别(手术器械计数):基于YOLOv8的智能手术器械管理系统

YOLOv8是Ultralytics公司于2023年推出的最新一代目标检测算法,相比前代YOLOv5,在精度和速度上都有显著提升。Anchor-free检测:不再使用预定义的anchor boxes,简化了检测流程更高效的骨干网络:采用CSPDarknet53作为特征提取网络多尺度特征融合:通过PANet结构实现更好的小目标检测损失函数优化:使用CIoU损失提高边界框回归精度YOLOv8提供了多种规模的模型(n/s/m/l/x),可根据实际需求在精度和速度之间进行权衡。

YOLO 480

突破边缘AI算力瓶颈:YOLOv12模型剪枝与知识蒸馏联合优化全攻略

这套剪枝-蒸馏联合方案的优势在于其系统性和可靠性。它不是单一的技巧,而是一套完整的工程流程,确保了从研发到部署的无缝衔接。

m0_71589036的博客 218

MFC list control控件添加图标

插入操作有两处,一是InsertHeroInfo(HeroInfo heroInfo)会将从文件中读取的插入到列表视图控件上,另一是按下添加按钮会将新创建的HeroInfo对象添加到列表视图控件上。因此要在这两个函数中添加相应的代码。添加位图资源,图片已经根据英雄的顺序排好了,添加后的的ID也就和英雄在文件中的排列顺序是一样的。把程序之前生成的heroinfo.dat文件删除,现在要重新生成一个文件来保存新的数据。是可以插入图标的,int nImage这个参数表示的就是插入的图片在图片列表中的序号。

m0_72895175的博客 424

从微服务到 Agent 服务:架构思维的迁移

微服务的概念最早在2014年由Martin Fowler提出,核心是“将单体应用拆分为一组小的服务,每个服务运行在独立的进程中,服务之间采用轻量级的通信机制互相协作,每个服务围绕具体业务构建,并且可以独立部署到生产环境”。单一职责:每个微服务只负责一个业务领域的功能,比如订单服务只处理订单相关的逻辑,用户服务只处理用户相关的逻辑被动响应:微服务是“哑的”,只有收到外部请求的时候才会执行逻辑,本身没有主动决策的能力固定流程:微服务的逻辑是硬编码的,执行流程是提前定义好的,只能按照程序员写的代码处理请求。

AI智能探索者的博客 275

MFC:CComboBoxEx使用总结

1.将Extended Combo Box控件拖到界面2.添加对话框Memberprivate: CComboBoxEx m_cbex; CImageList m_imglist;3.OnInitDialog添加代码m_imglist.Create(16, 16, ILC_COLORDDB, 2, 2);//ILC_COLORDDB会比较好点,其他值若设置不正确有可能失真 m_img

Hisin Wang的专栏 2338

手把手教你完成基于matlab的LSTM时间序列分析

时间序列是按时间顺序组织的数字序列,是数据分析中重要的处理对象之一。时间序列的主要特点是数据获取方式一般具有客观性,能反映某种现象的变化趋势或统计指标,进而预测未来走向,这在本质上也是一个回归预测的问题。长短时记忆网络(Long Short-Term Memory,LSTM)是一种循环神经网络,适合处理有更长时间跨度的内部记忆,被广泛应用于时间序列分析,能够保持数据的内在持续性,反映数据的细粒度走势,具有良好的预测效果。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 896

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

CTreeList 拖拽功能实现

转载地址:http://tech.ddvip.com/2008-11/122662837992492.html   Visual C++中提供的MFC类CtreeCtrl(树型控件)用来显示具有一定层次结构的数据项时方便、直观,所以它已经被广泛地应用在各种软件中,如资源管理器中的磁盘目录就用的是树型控件,我们在编程中也会经常用到这个控件,但是这个控件也有缺陷,那就是它并不直接支持拖动节点等高级

barrassed的专栏 1694

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

imagelist均割 切割 分割 一个大位图

m_imagelist.Create(16, 16, TRUE, 2, 2);                                               //创建16*16的图标 m_imagelist.Add(AfxGetApp()->LoadIcon(IDR_DBTYPE));                    //向imagelist中加入图标 m_imagelist.

天蓝的专栏 1942

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VC MFC(Custom Control)自定义控件

关于Custom Control自定义控件的介绍,有一篇文章感觉不错,不过是英文的,英语不好的也没关系,不是有“有道”吗?再说了,我们只要看代码就行了,而且步骤也就那么几步,结合教程图片稍微猜一下也就知道了。 原文地址:http://www.codeproject.com/KB/static/CustomControl.aspx 接下来我把上面教程的操作步骤简单描述一下: 首先往对话框添加一

小龙王2010 5110

vc++ mfc中拖动效果的实现 借助于CImageList

vc++ mfc中拖动效果的实现 借助于CImageList拖动是界面编程频繁使用的一个效果,在windows系统下可谓大行其道。纵观时下的应用软件几乎各个都支持各种各样拖动的效果,windows7更是把拖动做到了极致。其实说起来拖动的实现也很简单,对于有句柄的对象都可以通过MoveWindow或SetWindowPos实现位置变动,而没有句柄的对象实现拖动无非就是做些参数修改,说到底实现拖动就是...

yousss的博客 1020

在分割的视图内实现CListCtrl控件 结合CImageList实现图片的自动排列显示

先上一个效果图:   1.建立单文档视图工程 2.

昔月长弓的专栏 3277
上一篇: C++ 控件之 CHeadCtrl
下一篇: C++控件之 CList
xmlscript
博客等级 码龄25年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值