Доброго времени суток. Нужна небольшая помощь в поиске причин, по которым не работает LWA_COLORKEY-прозрачность под XP. Тот-же код работает под семеркой с aero и без него. Я не смог сформулировать запрос для гугла, по которому выдавало бы похожие пробелмы. Собственно код который относится к окну довольно тривиален:
| Код | WNDCLASS WinClass;
WinClass.style = CS_HREDRAW | CS_VREDRAW; WinClass.lpfnWndProc = WndProc; WinClass.cbClsExtra = 0; WinClass.cbWndExtra = 0; WinClass.hInstance = hInstance; WinClass.hIcon = LoadIcon( NULL, L"something.ico" ); WinClass.hCursor = LoadCursor( NULL, IDC_ARROW ); WinClass.hbrBackground = (HBRUSH)GetStockObject( 0 ); WinClass.lpszMenuName = NULL; WinClass.lpszClassName = L"something";
|
| Код | CreateWindowEx(WS_EX_LAYERED, L"something", L"something", WS_POPUP | WS_GROUP, PosX, PosY, screenw, screenh, NULL, NULL, hInstance, NULL );
SetLayeredWindowAttributes(hwnd, RGB(0xFF, 0x00, 0xFF), 255, LWA_COLORKEY);
|
Собственно, вот и весь код, который напрямю относится к сабжу. Под XP я просто вижу этот цвет(255, 0, 255) вместо того, что находится позади окна. Хотя я помню, как до этого черный цвет становился прозрачным(даже если бы установлен другой как цвет прозрачности), когда я делал bitblt из массива байт заполненного нулями в это окно. Возможно еще какие-то строчки надо показать? |