Установка цвета фона диалоговой кнопки Win32 (не нарисовано владельцем) - PullRequest
0 голосов
/ 03 сентября 2010

Можно ли установить цвет фона диалоговой кнопки в Win32, не используя кнопку, нарисованную владельцем?

Следующее рисует фон каждого элемента диалога, кроме кнопок (не нарисованных владельцем):

case WM_CTLCOLOREDIT:
case WM_CTLCOLORSTATIC:
case WM_CTLCOLORBTN:

    HDC hdcStatic = (HDC)wParam;
    SetBkColor(hdcStatic, bgEditColor);    

    return (INT_PTR)bgBrushCurrent; // a red brush created earlier

1 Ответ

2 голосов
/ 03 сентября 2010

Для этого сообщения в документации SDK это явно:

Кнопки со стилями BS_PUSHBUTTON, BS_DEFPUSHBUTTON или BS_PUSHLIKE не используют возвращенную кисть.Кнопки с этими стилями всегда отображаются в системных цветах по умолчанию.Для рисования кнопок требуются несколько различных кистей: лицо, выделение и тень, но сообщение WM_CTLCOLORBTN позволяет возвращать только одну кисть.Чтобы обеспечить настраиваемый внешний вид кнопок, используйте нарисованную владельцем кнопку.

В настоящее время большинство программ Windows используют визуальный стиль, выбранный пользователем.Рекомендуется добавить требуемый манифест .

...