Все-аэро окна имеют смешанные цвета элементов управления — как этого избежать

Я ищу способ рисовать свои пользовательские элементы управления в клиентской и не клиентской области диалога. Более или менее белая область ниже

введите описание изображения здесь

я использовал DwmExtendFrameIntoClientArea и мне удалось получить этот эффект, расширив клиентскую область на все окно с

MARGINS mar = {-1, -1, -1, -1};

DwmExtendFrameIntoClientArea ( hWnd, &mar );

но теперь каждый элемент управления, который я установил с прозрачным фоном

SetBkMode(hdc, TRANSPARENT);

смешивать их цвета с аэроэлементом (та же проблема вы можете увидеть здесь).

Есть ли способ для элементов управления сохранить свой правильный цвет и избежать смешивания с фоном?

0

Решение

Это потому, что окно рассматривало черный цвет как ключ прозрачности.

Вам просто нужно установить другое значение:

SetWindowLong(hWnd,GWL_EXSTYLE,WS_EX_LAYERED);
// Choose a colour that you will not use in the program, eg RGB(200,201,202)
SetLayeredWindowAttributes(hWnd,RGB(200,201,202),0,LWA_COLORKEY);
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector