使用 32 位抗失真图标
windows xp 图像列表是用于某些控件(如列表视图控件)的图像集,它支持使用 32 位抗失真图标和位图。颜色值使用 24 位,而 8 位用作图标上的 alpha 通道。要创建可以处理 32 位/像素 (bpp) 图像的图像列表,请调用 imagelist_create 函数,并传递 ilc_color32 标志。
下图说明了图标格式尚未更改,但创建这些图标的方式已经改变。

图标格式
要正确创建 32 位图标,请执行以下步骤:
- 为每个图标创建多个图像。下图显示了这些图像。

同一图标的多个图像
- 在上图中,前三个图像为 16 色模式,用于安全模式。
- 接下来的三个图标用于 windows xp 256 色模式。
- 最后三个图标具有 alpha 通道,仅能用于以 24 位或更高位颜色运行的 windows xp 或更高版本的操作系统。
- 在图标格式中,这些图像的排列顺序比较重要。如果顺序不正确,低版本 windows 在抽取这些图标时可能会出错。错误地抽取图标会导致内存崩溃和呈现不正常。
- windows 早期版本具有 10 个图标的资源限制,而 windows xp 却支持上千个图标资源。
注意:您可以使用第三方工具生成包含 alpha 通道的图标文件和位图。
使您的应用程序可同时在 windows xp 和 windows 的早期版本上正常运行
windows xp 外观风格体系结构中的大部分都是为了使您的产品仍能在不支持更改控件外观的旧版 windows 上正常运行。为了使应用程序能在多个操作系统上正常运行,请注意以下事项:
- 在旧版本操作系统中安装应用程序的声明将不会影响控件的显示。
- 您必须测试您的应用程序,以确保先检查当前版本而不依赖于 comctl32.dll 版本 6 的功能。
- 不要直接链接到 uxtheme.lib。如果您使用 uxtheme api 来向自定义控件添加外观风格,请根据需要加载库。
- 如果外观风格无法达到预期效果,则为实例编写错误处理代码。
- 如果您使用的是 comctl32.dll 版本 6 中的功能(如平铺视图或链接控件),则必须处理无法在用户计算机上使用这些控件的情况。comctl32.dll 版本 6 不可重新分发。
总结
本文档说明了将外观风格应用于应用程序时必须执行的任务。它没有包括需要执行的所有任务,而是讨论了一些最常见任务。