我想将一个HICON用作另一个HICON的叠加层,以创建结果HICON。结果HICON将用于“所有者绘制”控件(注意:它不使用图像列表)。叠加图标的透明度为RGB(0,255,0)。
如何在Native C ++中执行此操作(我只找到了显示如何使用托管代码执行此操作的源代码)。
答案 0 :(得分:1)
(1)叠加图标
在Windows API的许多地方,都支持叠加图标(例如ListView和TreeView以及ImageList的帮助,还有in the shell)
(2)正如汉斯所说
(3)如果你坚持
如果你坚持手动做(虽然我没有理由):
GetIconInfo
获取基础位图。请注意,b& w图标需要特殊处理GetObject
获取HBITMAP的BITMAP。如果你还不坚持处理各种位图格式,你应该将它们转换为DIB部分。 答案 1 :(得分:1)
我普遍同意彼得臣的回答,并附上一些说明:
GetIconInfo
实际上会在您的流程中创建icon't位图的副本。当你不再需要时,你有责任删除它们。HICON
传递给标准控件或其他进程,否则无需创建此类控件。相反,最好使用位图(可能还有掩码)。了解图标和位图之间的区别非常重要。
有几种图标类型:
因此,在获得图标的内容(通过GetIconInfo
)之后,您应该发现实际的图标类型,因为每个选项都需要不同的处理。