在XP下使用WS_EX_COMPOSITED的OwnerDraw

时间:2013-02-15 07:23:05

标签: c++ winapi doublebuffered ownerdrawn

我有一个静态控件,当它被装箱时会有SS_OWNERDRAWSS_NOTIFY标志。它的父窗口有WS_EX_COMPOSITED标志。

在Windows XP下,它未正确绘制,如下图所示(右上方矩形):

enter image description here

但在Windows 7下,它被正确绘制,如下图所示(corss" X"在右上角):

enter image description here

如何解决XP中的这个问题?此外,是什么导致了这个问题(在XP中)?

1 个答案:

答案 0 :(得分:1)

CreateWindowEx()的MSDN说:

  

设置WS_EX_COMPOSITED后,窗口的所有后代都会获得   使用双缓冲的自下而上的绘画顺序。底部到顶部   绘画顺序允许后代窗口具有半透明度(alpha)   和透明度(颜色 - 键)效果,但只有后代   窗口也设置了WS_EX_TRANSPARENT位。双缓冲允许   窗口及其后代无需闪烁即可绘制。

即。子STATIC控件应设置WS_EX_TRANSPARENT