工具栏上的图标不透明

时间:2009-05-18 05:01:02

标签: c++ atl

我们创建了一个IE工具栏。我们在工具栏上显示一个图标,方法是使用静态控件并将图像保留在工具栏上。

因为这个静态控件不透明所以这个图标显示一些背景颜色(这是windows常用控件的默认颜色)。

无论浏览器主题如何,都可以将静态控件设置为透明。

项目是在ATL C ++中开发的。

我们尝试将WS_EX_TRANSPARENT作为静态控件的属性,当我们尝试在OnCtrlColorStatic事件中返回null_brush时,但仍然没有解决问题。

1 个答案:

答案 0 :(得分:1)

好吧,我对ATL了解不多,但在标准的Windows API中,您可以使用LoadImage函数来加载图像。以下是获取透明部分(透明背景)图像的一些提示:

  1. 图像必须具有“按键颜色”,图像中该颜色的每个像素在显示时将变为透明。该颜色必须是位于图像左上角的第一个像素的颜色。在使用某些标志调用LoadImage(详细信息如下)时,窗口将加载图像,读取左上角的像素颜色,并使图像中与第一个像素具有相同颜色的所有像素都被隐藏(它们变为透明)。

  2. 调用LoadImage时,第三个参数必须是IMAGE_BITMAP或IMAGE_ICON,这取决于您用于显示图像的哪些GDI函数(图标函数或位图函数)。最后一个标志也必须包含LR_LOADTRANSPARENT才能正确使用颜色键控。

  3. 如上所述动态加载图像后,您将拥有此资源的句柄,您可以使用标准GDI函数动态绘制静态控件的显示上下文,如果您使用IMAGE_ICON标志加载它,则使用DrawIconEx

  4. 希望它有所帮助。