Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 工具栏上的图标不透明_C++_Atl - Fatal编程技术网

C++ 工具栏上的图标不透明

C++ 工具栏上的图标不透明,c++,atl,C++,Atl,我们已经创建了一个IE工具栏。我们使用静态控件在工具栏上显示一个图标,并将图像保持在其上 由于此静态控件不透明,因此此图标显示一些背景颜色(这是windows常用控件的默认颜色) 是否可以使静态控件透明,而不考虑浏览器主题 项目是在ATL C++中开发的。 我们尝试将WS_EX_TRANSPARENT作为静态控件的属性,并尝试在onctrlocorstatic事件中返回null_笔刷,但问题仍然没有解决。我对ATL了解不多,但在标准Windows API中,您将使用函数加载映像。以下是获取具有透

我们已经创建了一个IE工具栏。我们使用静态控件在工具栏上显示一个图标,并将图像保持在其上

由于此静态控件不透明,因此此图标显示一些背景颜色(这是windows常用控件的默认颜色)

是否可以使静态控件透明,而不考虑浏览器主题

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


我们尝试将WS_EX_TRANSPARENT作为静态控件的属性,并尝试在onctrlocorstatic事件中返回null_笔刷,但问题仍然没有解决。

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

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

  • 调用LoadImage时,第三个参数必须是IMAGE\u BITMAP或IMAGE\u ICON,这取决于用于显示图像的GDI函数(ICON函数或BITMAP函数)。此外,最后一个标志必须包含LR_LOADTRANSPARENT,以便正确使用颜色键控

  • 如上所述动态加载图像后,您将拥有该资源的句柄,可以使用标准GDI函数(如DrawIconEx)在静态控件的显示上下文上动态绘制该资源,如果您使用image_图标标志加载了它


  • 希望有帮助。

    现在我发现这个问题已经很老了,但可能会帮助其他人在网上搜索帮助。