2016-12-22 7 views
-2

Я использую clrTextBk для установки цвета фона. Но в системе Windows есть много тем с разными стандартными цветами фона. Например, в теме Windows XP используется цвет # 316ac5, классический цвет для использования темы, например, COLOR_HOTLIGHT, # 0a246a и другие другие цвета, которые используются как clrTextBk. Я могу попробовать использовать GetSysColor с параметром COLOR_BACKGROUND или COLOR_DESKTOP, но этот цвет не является стандартом для clrTextBk. Как получить стандартный цвет фона (clrTextBk) для текущей темы?WinApi - Получить стандартный цвет фона

+0

Вам нужно будет использовать тему api –

+0

Спасибо. Я пытаюсь использовать OpenThemeData (hMainWnd, PWideChar ('TEXTSTYLE')), но это дает ошибку: ** SIGSEGV **. –

+0

Как это вообще удалось скомпилировать? У вас не может быть более одного фактического символа в символьной константе. Кроме того, это даже не широкая строка символов! В любом случае, я не уверен, какова ваша ситуация; на какой поверхности вы пытаетесь нарисовать? Закладка? Неклиентская область? Что-то другое? Если бы вы могли предоставить скриншот, который бы помог. Также вы говорите о цвет фона текста или какой-либо другой цвет фона? Также стандартный цвет фона диалогового окна - 'COLOR_BTNFACE', даже с включенной поддержкой тематики, но вам не нужно беспокоиться об этом в зависимости от того, что вы делаете ... – andlabs

ответ

0

ответа (спасибо Cody Серый и Andlabs):

clrTextBk is a field of NMLVCUSTOMDRAW

и мне нужно использовать GetSysColor(COLOR_HIGHLIGHT), чтобы получить стандартный цвет фона выделенного текста.

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