Получить свойства темы строк Group Box - PullRequest
1 голос
/ 08 мая 2011

Моя цель - нарисовать Групповую коробку, которая не прямоугольная, а срезанная по углам. Я имею в виду не просто обрезку углов, а скорее непрерывный замкнутый путь, где углы «с отступом». Я хочу, чтобы это соответствовало цветам / стилю текущей темы.

Я заметил в Windows XP, что Group Box имеет 1-пиксельные серые линии, но в Windows 7 есть 3D-эффект, созданный серой линией рядом с белой линией (белая линия внутри, за исключением нижней части) где это ниже серой линии).

Вы можете получить цвет текстовой метки группового блока, используя что-то вроде этого:

COLORREF cref;
GetThemeColor(hTheme, BP_GROUPBOX, GBS_NORMAL, TMT_TEXTCOLOR, &cref);

Итак, я пытаюсь выяснить, как получить цвет (ы) и / или свойства линий, используемых в окне группы, затем (я надеюсь) иметь возможность нарисовать линии, которые я хочу, соответствовать группе Стиль коробки, отдельно рисуя каждый кусок формы, которую я хочу. Я не уверен, какие свойства используются для описания линий или если функция line DrawRect нарисует 3D-эффект с помощью подходящего пера. Есть ли способ установить перо для рисования этих 3D-эффектов (2-параллельные параллельные линии)?

Спасибо.

1 Ответ

1 голос
/ 09 мая 2011

В групповых окнах я всегда нахожу неожиданность в том, что они действительно стиль кнопок. (BS_GROUPBOX).

Тематические групповые блоки (XP и более поздние версии с выключенным классическим режимом) используют тематическую часть BP_GROUPBOX в VSCLASS_BUTTON. Вы можете использовать обычные API темы, чтобы получать и рисовать. Если для вашей группы требуется текст, вы можете использовать DrawThemeText.

Существуют API-интерфейсы для рисования групповых блоков, не относящихся к темам (например, DrawEdge), но я не помню деталей, и маловероятно, что они вам нужны.

Как обычно, я укажу, что воспроизвести поведение элементов управления всегда сложнее, чем вы думаете.

Martyn

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