首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>C/C++>开发工具>VisualC++中如何保证256色以上的图标加载后不失真?
VisualC++中如何保证256色以上的图标加载后不失真?
来源: 发布时间:2008-08-14 发布人: 浏览: 人次   字体: [ ]  
       在学习Visual C++编程的过程中,有很多朋友可能会问Visual C++中如何保证256色以上的图标加载后不失真。虽然有介绍如何实现256色以上的工具栏的文章,但是方法中大都采用加载一幅256色以上的工具栏位图的方法。这样的方法存在一个麻烦就是用什么简便好用的制图工具来做这样的位图呢?相信读者朋友都希望能有更直接的方法来使用256色以上的图标,并且能够以透明的效果不失真地将图标显示出来。本实例介绍了实现上述目标的方法,实现了在工具条上显示透明的256色位图,程序编译运行后的界面效果如图一所示:

图一、透明显示256色的
  一、实现方法

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

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

BOOL Create(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类对象中去。其中LoadImage()的函数原型如下:

HANDLE LoadImage(
 HINSTANCE hinst, // handle of the instance containing the image
 LPCTSTR lpszName, // name or identifier of image
 UINT uType, // type of image
 int cxDesired, // desired width
 int cyDesired, // desired height
 UINT fuLoad // load flags
);
  上述函数用来装载图标、图像或光标资源,如果调用成功,函数返回装载的资源的句柄,否则返回"NULL"。其中参数hinst为包含图标/图像资源的应用程序句柄;lpszName为资源的名字,该资源名字的获取可以使用MAKEINTRESOURCE()函数将资源ID转换得到;参数uType说明当前资源的类型,是图标、图像还是光标;cxDesired和cyDesired为希望的目标尺寸;最后一个参数是装载标志,在处理图标资源时,一般情况下设置为"0"。

  最后,需要调用CToolBarCtrl类的CImageList* SetImageList( CImageList* pImageList )函数将图标列表对象与工具条对象关联起来,从而在工具条上显示出装载的图标。

  二、编程步骤

  1、 启动
Visual C++6.0,建立一个单文档工程(多文档也可)的应用程序,命名为"TB";

  2、 在程序的主框架CMainFrame类的头中定义一个CImageList对象,代码如下:CImageList m_ilTB;

  3、 在应用程序中添加256色的彩色图标,具体方法是启动程序中图标资源编辑器,点击资源编辑器上的"New Device Image"按钮,在弹出的对话框中选择"自定义"就可以了,实例程序中采用的图标大小为32*32,颜色为256色;

  4、 添加代码,编译运行程序;


共2页: 上一页 1 [2] 下一页
相 关 文 章   发布商链接
·vc++实现下载工具软件flashget浮动窗...
·vc++实现对广告窗口的自动关闭代码
·VC调用JavaScript 实现如何使当前程...
·实例讲解vc调用winrar进行文件解压程...
·如何用VC编写供PB调用的Dll须注意的...
·vc++中找不到controls了怎么办?
·用vc++开发的程序编译连接时出现了un...
·如何在VC2008中编程实现获取程序的版...
·图解VC2005之创建解决方案祥细步骤
·如何在Tree空件上实现点右健选中Item...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·vc++实现下载工具软件flashge...
·VC获取目录的两种方法代码
·VC获得当前系统是什么语言版...
·双击VC对话框提示cannot add ...
·VC操作Excel和运用ADO操作数...
·vc6.0实现鼠标显示按钮功能提
·VC++更改系统IP地址的方法代...
·如何消除vc屏幕闪烁的方法?
·在CListView控件添加右键弹出
·MFC中利用CMenu类动态添加弹...
·详解如何在VC++下动态调整水...
·如何在VC++下完全动态生成水...
·C++builder调试时提示找不到b...
·vc实现定时执行任务的两种方...
·VC使用定时机制的几种方法
热 门 文 章
·图解VC2005之创建解决方案祥...
·VC++更改系统IP地址的方法代...
·在VC中创建DLL文件的方法步骤...
·VC使用定时机制的几种方法
·Vc中自定义消息及其触发使用
·VC制作使用图片做为背景的对...
·vc实现定时执行任务的两种方...
·在CListView控件添加右键弹出...
·如何在VC++下完全动态生成水...
·MFC中利用CMenu类动态添加弹...
·C++builder调试时提示找不到b...
·双击VC对话框提示cannot add ...
·如何消除vc屏幕闪烁的方法?
·实例讲解vc调用winrar进行文...
·Visual C++开发工具与调试技...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .