cimagelist_mfc使用listctrl图标_imagelist与headCtrl

电脑杂谈  发布时间:2017-03-08 00:03:21  来源:网络整理

cimagelist_mfc使用listctrl图标_imagelist与headCtrl

在学习Visual C++编程的过程中,有很多朋友可能会问Visual C++中如何保证256色以上的图标加载后不失真。虽然有介绍如何实现256色以上的工具栏的文章,但是方法中大都采用加载一幅256色以上的工具栏位图的方法。这样的方法存在一个麻烦就是用什么简便好用的制图工具来做这样的位图呢?相信读者朋友都希望能有更直接的方法来使用256色以上的图标,并且能够以透明的效果不失真地将图标显示出来。本实例介绍了实现上述目标的方法,实现了在工具条上显示透明的256色位图:

一、实现方法

一般情况下,我们如果碰到需要在程序中使用图标的问题,首先要想到要用图像列表CimlageList类,该类是相同尺寸的图像或图标的集合,每个图像或图标用以"0"为基准的索引号来表征,因此它能有效地管理大量图标或位图。cimagelistCimageList类常与列表控件ClistCtrl、树控件CtreeCtrl或标签控件CtabCtrl一起使用,在本实例中,该类与CtoobBarCtrl类一起使用。

CimageList类的成员函数Create()初始化图像列表并且将它附加到一个CimageList对象上,该函数原型为:

BOOLCreate(int cx,int cy,BOOL bMask,int nIn

...

在学习Visual C++编程的过程中,有很多朋友可能会问Visual C++中如何保证256色以上的图标加载后不失真。虽然有介绍如何实现256色以上的工具栏的文章,但是方法中大都采用加载一幅256色以上的工具栏位图的方法。这样的方法存在一个麻烦就是用什么简便好用的制图工具来做这样的位图呢?相信读者朋友都希望能有更直接的方法来使用256色以上的图标,并且能够以透明的效果不失真地将图标显示出来。本实例介绍了实现上述目标的方法,实现了在工具条上显示透明的256色位图:

一、实现方法

一般情况下,我们如果碰到需要在程序中使用图标的问题,首先要想到要用图像列表CimlageList类,该类是相同尺寸的图像或图标的集合,每个图像或图标用以"0"为基准的索引号来表征,因此它能有效地管理大量图标或位图。CimageList类常与列表控件ClistCtrl、树控件CtreeCtrl或标签控件CtabCtrl一起使用,在本实例中,该类与CtoobBarCtrl类一起使用。

CimageList类的成员函数Create()初始化图像列表并且将它附加到一个CimageList对象上,该函数原型为:

BOOLCreate(int cx,int cy,BOOL bMask,int nInitial,int nGrow);

函数中前两个参数cx、cy指定了图标/图像的宽度和高度,即:图标/图像的尺寸定义。 第三个参数bMask为掩模标志,它指定何如显示图标/图像。如果该值等于ILC_ COLOR8说明以256色的调色板来显示图标/图像。而等于值"TRUE"则指明了以透明方式来显示图标/图像。那么如果两者进行"按位或"运算后的意义就变为:以透明方式来显示256标。 函数中的第四和第五个参数则分别表示为:初始图标个数和新增图标时对象自动申请内存空间的步长。如果在操作图标,并且需要不断的增删图标时,设置第五个参数可以改变程序的性能,如果第五个参数设置的比较适中则可以避免程序反复的申请和释放内存空间。

创建过CImageList类后,还需要将各个图标装载到该类的对象中去,具体实现过程可以先用Windows的API函数LoadImage()装载图标资源,然后用CImageList类的Add(HICON hIcon)函数加将装载后的图表添加到CImageList类对象中去。cimagelist其中LoadImage()的函数原型如下:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-36347-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 顾诗吟
      顾诗吟

      还真的是

    • 杨扬
      杨扬

      这明显是自亚投行以来中国在国际上混的风生水起

    • 侯天宇
      侯天宇

      我是南昌在校大学生

    热点图片
    拼命载入中...