Я ищу способ рисовать свои пользовательские элементы управления в клиентской и не клиентской области диалога. Более или менее белая область ниже
я использовал DwmExtendFrameIntoClientArea
и мне удалось получить этот эффект, расширив клиентскую область на все окно с
MARGINS mar = {-1, -1, -1, -1};
DwmExtendFrameIntoClientArea ( hWnd, &mar );
но теперь каждый элемент управления, который я установил с прозрачным фоном
SetBkMode(hdc, TRANSPARENT);
смешивать их цвета с аэроэлементом (та же проблема вы можете увидеть здесь).
Есть ли способ для элементов управления сохранить свой правильный цвет и избежать смешивания с фоном?
Это потому, что окно рассматривало черный цвет как ключ прозрачности.
Вам просто нужно установить другое значение:
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);
Других решений пока нет …