2015-10-25 8 views
0

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

enter image description here

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

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

DwmExtendFrameIntoClientArea (hWnd, &mar); 

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

SetBkMode(hdc, TRANSPARENT); 

имеет свои цвета смешаны с аэро материалом (с той же проблемой you can see here).

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

+0

Можем ли мы, пожалуйста, иметь [mcve] –

ответ

1

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

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

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); 

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

  • Нет связанных вопросов^_^