1

在 WTL 中,CBitmapButton 不支持带有透明层的图片,例如 PNG。所以我自定义代码以使用 GDI+ 绘制 PNG,将其命名为 CPNGButton。但是在win XP上事情很奇怪。当按钮被其他窗口重叠时,按钮先接收 WM_PAINT,然后再接收父级,导致结果不正确。

在此处输入图像描述--->在此处输入图像描述

我检查资源并从按钮的模板中删除 WS_TABSTOP 属性,一切正常,父窗口首先接收 WM_PAINT,然后是按钮。是什么导致 WS_TABSTOP 影响窗口绘制顺序?

4

1 回答 1

2

这就是不绘制背景时发生的情况。这会在窗口中留下一个“洞”,您可以看到您后面的任何窗口的像素。或者桌面,如果没有这样的窗口。否则不确定这与 WS_TABSTOP 有什么关系。

使用 WS_EX_TRANSPARENT 样式标志。这告诉 Windows 您希望按钮的父级在客户端窗口中绘制自身以提供背景像素。

于 2012-02-27T13:21:34.523 回答