Win32: Как я могу установить цвет окна заголовка, полосы прокрутки и т. Д.? - PullRequest
2 голосов
/ 13 января 2010

Я обновляю графический интерфейс приложения Win32 белым текстом на черном фоне. Это просто для моего контента. Но как я могу изменить также цвет моих дочерних окон (Titlebar, Scrollbar и т. Д.). Я знаю, что есть WM_CTLCOLORDLG, чтобы установить цвет диалогов. Я также знаю, что есть WM_NCPAINT, но это оставило бы всю живопись (т.е. полосы прокрутки) мне. Все, что я хочу, это установить цвета по своему выбору.

Ответы [ 2 ]

1 голос
/ 15 января 2010

Hook GetSysColor () (используя что-то вроде Microsoft Detours)

1 голос
/ 13 января 2010

Вы можете использовать SetSysColors (), чтобы изменить цвет для заголовков окон, границ и т. Д. (См. http://msdn.microsoft.com/en-us/library/ms724940(VS.85).aspx). Однако это изменит цвет для всех окон, а не только для ваших, так что это по крайней мере недружелюбная вещь.

Одним из вариантов является использование SetSysColors () для изменения цвета заголовка активного окна, когда ваше приложение имеет фокус, и для сброса его к значениям по умолчанию, когда оно теряет фокус. Но я бы сказал, что это глупо и не совсем соответствует хорошей практике (предположим, что ваше приложение аварийно завершает работу? И может быть какое-то мерцание).

WM_NCPAINT существует, чтобы вы могли делать такие вещи. Это немного больно, но, может быть, это отговорит вас от создания нестандартных окон ...; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...