是什么导致WS_TABSTOP影响窗口绘制顺序?

时间:2012-02-27 09:38:33

标签: c++ windows visual-c++ wtl wm-paint

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

enter image description here ---> enter image description here

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

1 个答案:

答案 0 :(得分:2)

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

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