exe在windows shell下的可显示图标有3或者4种,使用win32 API获取它们的ICON
handle的代码也很简单,
前一篇文章已经说过。这里主要难点是如何根据ico文件的存储格式,把HICON保存为*.ico文件。
文件格式:icon文件头 + directory entrys + bmp
header info and color table + image data + mask data。
思路:从HICON拿到两个BITMAP HANDLE,从Color
HANDLE拿到ICON image data,从MaskHandle拿到mask data,从两HANDLE拿到bmp header
的数据。所有数据拿到后写入文件,循环处理多个HICON。
256*256 icon的说明:这是windows
vista+版本才有的。虽然可以加载保存为png格式的*.ico文件,但是GDI并没有提供直接操作png图片的API,我写的工具保存256 * 256
icon图片为BMP格式,会比较大。注意到在directory
entry中各只有一个字节保存icon的的长、宽,所以256*256的图片该位置的值是0。