32位的位图主要是包含Alpha值(0-255)可以有半透效果的.
之前用FreeImage加载 的DIB, CImageList直接绘制会有黑色背景.
即便用了ILC_MASK,也创建了mask map, 这种是旧式的图标/光标透明效果, 遮罩透明, 没有alpha通道和渐变,效果仍然很差.
所以以前的toolbar/menu/tab control 都是ownerdraw, 先ExtractIcon,用DrawStat (DST_ICON)来绘制图标,这样绘的制是支持32位图标的.
但是最近给toolbar加了下拉功能,自绘感觉很麻烦,所以想让控件自己绘制.

最后发现之前不能绘制半透是因为ILC_COLOR32只有在comctl32 6.0以上版本才支持.

http://msdn.microsoft.com/en-us/library/windows/desktop/bb761522(v=vs.85).aspx

When you finish using the image list, destroy it by calling the ImageList_Destroy function.

Note  Comctl32.dll version 6 is not redistributable but it is included in Windows XP or later. To use Comctl32.dll version 6, specify it in a manifest. For more information on manifests, see Enabling Visual Styles.

-_-! 以上是MSDN链接和说明,只提到如何使用6.0, 但对于ILC_COLOR32 必须用6.0这一点,好像只字未提, 我在google group讨论组搜到的结果是这么说的.感觉被M$坑的好苦.

如何使用6.0版本的common control库呢?

http://msdn.microsoft.com/en-us/library/windows/desktop/bb773175(v=vs.85).aspx
可以手写manifest,或者用VC的pragma,比如:

#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \

processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

会通知链接器将6.0的依赖信息添加到manifest. 上面提到XP以后系统就带了6.0的common control了,据说这也是XP/2000 才开始支持图标半透的原因,所以基本上不用担心系统的comctl32版本太低.启用以后发现视觉样式也开启了,很明显的toolbar和tab control跟以前不一样了.

[百度空间] [原]CImageList支持32位透明位图的更多相关文章

  1. iPhone5s 等 64位真机 运行 带有百度地图等 仅支持32位系统API和SDK的问题

    将下图中画红色框的部分去掉,程序就不再支持64位了.iPhone5s 将使用它的32位兼容模式.(而不再是64位模式)百度地图也不会报错了.

  2. iOS 11确认将完全停止支持 32 位应用

    苹果正在逐渐淘汰 32 位应用,而且会在今年秋天完成.根据知名开发者 Steven Troughton-Smith 透露,苹果会在 iOS 11 发布后,停止支持 32 位应用.这意味着 App St ...

  3. Windows2003 IIS6.0支持32位和64位两种模式的设置方法

    IIS 6.0 可支持 32 位和 64 位两种模式.但是,IIS 6.0 不支持在 64 位版本的 Windows 上同时运行这两种模式.ASP.NET 1.1 只在 32 位模式下运行.而 ASP ...

  4. C# 第三方DLL,可以实现PDF转图片,支持32位系统、64位系统

    itextsharp.dll,是一个开源的在C#中用来生成PDF文档的库文件,不少C#爱好者用它制作出了PDF文档生成器.使用时只需在你的C#项目中添加引入此组件即可,使用方法网上有很多,自己查阅一下 ...

  5. [百度空间] [原]跨平台编程注意事项(三): window 到 android 的 移植

    大的问题 先记录一下跨平台时需要注意的大方向. 1.OS和CPU 同一个操作系统, CPU也可能是不一样的, 比如windows也有基于arm CPU的版本,而android目前有x86,arm,mi ...

  6. [百度空间] [原]跨平台编程注意事项(二): windows下 x86到x64的移植

    之前转的: 将程序移植到64位Windows 还有自己乱写的一篇: 跨平台编程注意事项(一) 之前对于x64平台的移植都是纸上谈兵,算是前期准备工作, 但起码在写代码时,已经非常注意了.所以现在移植起 ...

  7. 如何让ios app支持32位和64位?

    将ios app转换为兼容32位和64位步骤:  1. 安装 Xcode 5.  2. 打开你的项目.Xcode会提示你更新你的项目,其中的警告和错误信息对于转换到64位相当重要.  3. 将你的项目 ...

  8. (转)关于X64位系统IIS7下支持32位asp.net程序

    最近在windows2008 x64位系统下的IIS7下部署asp.net程序. vs2005或vs2008默认的情况下是Any cpu 的也就是支持x86和x64两种系统的.可我的程序在引用了一个三 ...

  9. 是否升级IOS11?IOS11不支持32位程序 查看手机哪些APP不支持

    查看苹果32位APP具体步骤:设置-通用-关于本机-应用程序.如果手机中下载了32位应用的话,苹果会给出应用兼容性提醒:如果手机里没有安装32位应用,右侧没有小三角,点击“应用程序”也会没有反应. I ...

随机推荐

  1. Spring中Quartz调度器的使用

    一.Quartz的特点 * 按作业类的继承方式来分,主要有以下两种: 1.作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式 2. ...

  2. PHP实现下载功能之流程分析

    客户端从服务端下载文件的流程分析: 浏览器发送一个请求,请求访问服务器中的某个网页(如:down.php),该网页的代码如下. 服务器接受到该请求以后,马上运行该down.php文件 运行该文件的时候 ...

  3. VPN连接失败

    连接VPN是总提示 本来我以为是VPN服务器的问题,可是别人就能连接成功,所以只能是我自己机子的问题.后来检查了一下连接属性,终于发现了问题: 这里“允许使用这些协议”应该是处于选中状态,而我的属性里 ...

  4. [读书心得]资料分页的优化,以SQL 2012的 OFFSET-FETCH为例

    这是我的文章备份,原始出处:[读书心得]资料分页的优化,以SQL 2012的 OFFSET-FETCH为例 http://www.dotblogs.com.tw/mis2000lab/archive/ ...

  5. 在EF的code frist下写稳健的权限管理系统:界面设计(四)

    基本都是采用pure设计(中文官网:http://purecss.org,英文官网:http://purecss.io).pure只是一个简单强大的cssUI库,支持响应式设计,适合自己设计或者给美工 ...

  6. [terry笔记]ora-00904 invalid identifier—同义词

    今天遇到一个问题,说起来也简单,但是困扰我半天. 升级数据库后,一个功能无法运行,在后台观察到其sql,发现sql中包含一个包执行不了,报错ora-00904 invalid identifier w ...

  7. [terry笔记]ArchiveLog归档日志激增解决思路

    归档日志激增的危害是巨大的,最严重的结果就是数据库无法正常工作,导致整个系统无法正常工作,其次就算数据库可以正常工作,但激增的归档会对磁盘产生大量消耗,导致性能下降.       归档日志激增一般是因 ...

  8. oracle 11g 修改默认监听端口1521

    OS: Oracle Linux Server release 5.7 DB: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - ...

  9. Base

    base 关键字用于从派生类中访问基类的成员: 调用基类上已被其他方法重写的方法. 指定创建派生类实例时应调用的基类构造函数. 基类访问只能在构造函数.实例方法或实例属性访问器中进行. 从静态方法中使 ...

  10. hdu 1496 Equations

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1496 Equations Description Consider equations having ...