Как получить более заметные отметки, используя темы Win 7 (и позже)

После включения "Визуальных стилей" для приложения Windows 7 я заметил, что галочки для элементов управления trackbar32 практически не видны по сравнению с версией без ограничений:

Основная причина ограниченной видимости состоит в том, что тематические галочки серого цвета, а мой фон (по умолчанию DS_MODALFRAME - один) немного светлее серого.

Какой самый простой (но все же надежный) способ исправить это, который не зависит от текущей темы, сохраняя при этом другие визуальные элементы текущей темы? Особенно

  • Могу ли я рассчитывать на то, что тематические галочки всегда серые? Я мог бы попытаться найти статический фон, который лучше контрастирует с этим серым, но...
  • было бы бессмысленно, если цвет галочки может меняться в зависимости от темы. В этом случае мне нужен программный способ для создания контрастного. В идеале, нужно предоставить тему, и я должен просто запросить ее. Но если это не удастся, как я могу запросить только цвет галочек, чтобы я мог самостоятельно создать контрастный фон? Я посмотрел на список частей темы, но не очевидно, что относится к тикам (что-то из полосы прокрутки? На трекбаре ничего нет).

Мне удалось обнаружить, что vsstyle.h из Windows 7 SDK действительно определяет TKP_TICS в enum TRACKBARPARTS, поэтому я думаю, что это возможно для темы / стиля этих тиков. Я еще должен попробовать это (или найти пример). Кстати, весь API визуальных стилей сильно недокументирован.

Я попытался заставить фон диалога использовать фоновую тему "с вкладками", вызвав EnableThemeDialogTexture с ETDT_ENABLETAB. Существует сложная причина совместимости, по которой тематический фон не включен по умолчанию, даже если приложение тематическое. В Aero есть небольшая разница в видимости в том, что тематический фон по умолчанию светло-серый, чем не-тематический, но, на мой взгляд, его все же недостаточно.

В Windows 7 при использовании базовых (не аэро) высококонтрастных тем я получаю прилично контрастные тики с вызовом EnableThemeDialogTexture или без него, так что похоже, что фон "без тематики" все еще изменяется. Пример использования "High Contrast #2".

Раздражает, что мне приходится отключать аэро для этих высококонтрастных тем в Win 7. В Win 10 они изменили кнопку / курсор трекера обратно на квадрат (закругленные углы плохо работали на мобильных устройствах).

В противном случае нет большой разницы, чтобы сообщить; все еще приходится вызывать EnableThemeDialogTexture с ETDT_ENABLETAB, чтобы получить более светлый фон. Разница лишь в том, что высокая контрастность больше не отключает "аэро" (dwm). Один интересный аспект заключается в том, что, хотя вы можете загружать изобилие тем для Win 10, количество реальных визуальных стилей для общих элементов управления по-прежнему ограничено встроенными, выбранными с помощью высококонтрастной панели. Ни одна из тем, которые я скачал, никак не повлияла на эти галочки. Я предполагаю, что MS беспокоился о юзабилити или даже проблемах безопасности, поэтому темы не могут реально изменить все, что есть в визуальных стилях, особенно они, кажется, не влияют на общие элементы управления.

Еще одна вещь, которую я заметил, осматривая это, заключается в том, что Google Chrome обнаруживает высокую контрастность в Win 10, но не в Win 7, а когда он обнаруживает высокую контрастность, он предлагает установить собственную высококонтрастную тему или расширение (поэтому это делается на Win 10, но не на 7). Я подозреваю, что мог бы использовать это так, чтобы я изменил фон только на настройке неконтрастности по умолчанию... по крайней мере на Win 10.

0 ответов

Другие вопросы по тегам