Berry's blog with C++ & .Net

Windows & VxWorks development and learning notes.

导航

让VC告别图标失真的烦恼

Posted on 2009-10-10 22:49  Berry029  阅读(893)  评论(0)    收藏  举报

【简 介】
有介绍如何实现256色以上的工具栏的文章,但是方法中大都采用加载一幅256色以上的工具栏位图的方法。这样的方法存在一个麻烦就是:有什么简便好用的制图工具来做这样的位图呢?我知道大家都希望有更直接的方法来使用256色以上的图标,并且保持最终的效果不失真,那么,这篇文章将让你找到答案!

源码下载

效果图:
1077518135671 

    一. 建立一个单文档工程(多文档也可)。
  二. 在主框架CMainFrame类的头中定义一个CImageList对象。
  三. 在主框架CMainFrame类的OnCreate处理中创建CImageList对象并且向其中添加你想要的图标。
  其中CImageList的创建是本工程最最关键的一步,如果写错,那你就回到原处,结果是空空如也。哈哈!
m_ilTB.Create(32, 32, TRUE,ILC_COLOR8, 4, 0); //设置ToolBar的图标列表
  现在对这几个参数做个详细介绍如下:
  1. 前两个参数指定图标的宽度和高度,即:图标的尺寸定义。
  2. 第三个参数指定何如显示图标。ILC_ COLOR8说明以256色调色板来显示图标。而TRUE则指明了以透明方式来显示图标。那么两者进行"按位或"运算后的意义变为:以透明方式来显示256色图标。
  3. 第四和第五个参数则分别为:初始图标个数和新增图标时对象自动申请内存空间的步长。如果在大批量操作图标,并且需要不断的增删图标时,设置第五个参数可以改变程序的性能,如果第五个参数设置的比较适中则可以避免程序反复的申请和释放内存空间。
  四. 最后的一步就是加载和添加图标资源了。 HICON hIcon = NULL;
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);
  好了,一切就是这么简单,如果你还不清楚的话,那就打开工程看看吧,如你有什么问题也不要忘记来信告诉我哦!最后祝大家学习愉快,多多交流,多多进步,一切顺利!