2013-02-15 2 views
2

У меня есть статический контроль, который имеет SS_OWNERDRAW и SS_NOTIFY флаг, когда он упакован. Его родительское окно имеет флаг WS_EX_COMPOSITED.OwnerDraw с WS_EX_COMPOSITED под XP

В Windows XP, не рисуется правильно, так как на рисунке ниже показано (справа-сверху прямоугольник):

enter image description here

Но под Windows 7, она втягивается правильно, так как на рисунке показали (The corss "X" на правой верхней части):

enter image description here

Как исправить эту проблему в XP? Кроме того, что вызывает эту проблему (в XP)?

+0

Опубликовать код владельца-ничья. Это, вероятно, неудача альфа-канала. –

ответ

1

MSDN для CreateWindowEx() говорит, что это:

С WS_EX_COMPOSITED набор, все потомки окна получают снизу-вверх заказ картины с использованием двойной буферизации. Нижний порядок порядок окраски позволяет окну потомков иметь полупрозрачность (альфа) и эффекты прозрачности (цветной клавиши), но только если в окне потомка также установлен бит WS_EX_TRANSPARENT. Двойная буферизация позволяет окно и его потомки, которые будут окрашены без мерцания.

I.e. ребенок STATIC контроль должен иметь WS_EX_TRANSPARENT комплект.

+0

Я попытался использовать WS_EX_TRANSPARENT, но в XP он нарисовал что-нибудь, т. Е. «Нет символа корса, нет черного прямоугольника, только статический фон» – user565739

+0

Но в Windows 7 или 8 нет проблем. – user565739

Смежные вопросы