SetLayeredWindowAttributes не работает в Windows 7 - PullRequest
3 голосов
/ 19 октября 2010

Я использую SetLayeredWindowAttributer, чтобы сделать прозрачным определенный цвет многослойного окна.

Это прекрасно работает на Windows XP, VISTA. Но когда я использую то же самое на Windows 7, он не работает.

SetLayeredWindowAttributes(hWnd, RGB(0xff,0xff,0xff), 0, LWA_COLORKEY);

Когда я использую LWA_ALPHA, тогда это также работает. Проблема в том, что я не могу сделать определенный цвет прозрачным в Windows 7.

Следующее утверждение работает в Windows 7

SetLayeredWindowAttributes(hWnd,RGB(0xff,0xff,0xff), 100, LWA_ALPHA);

Возможно ли, что отображаемые значения цвета не соответствуют значению цвета в SetLayeredWindowAttributes?

1 Ответ

2 голосов
/ 08 ноября 2010

Вам не следует использовать 0xff, 0xff, 0xff (белый) с LWA_COLORKEY. Любое другое значение должно быть в порядке (например, 0xff, 0xff, 0xfe).

Для большего контроля над вашим многоуровневым окном я предлагаю вам рассмотреть возможность использования UpdateLayeredWindowIndirect. Я написал статью, в которой подробно описывается, как ее можно использовать как с GDI, так и с Direct2D.

http://msdn.microsoft.com/en-us/magazine/ee819134.aspx

...