Поддержка тем высокой контрастности
В этом разделе сравнивается поддержка тем высокой контрастности в Windows 8 с предыдущими версиями Windows и объясняется, как поддерживать темы высокой контрастности в приложении Windows 8.
Он содержит следующие разделы.
- Обзор поддержки тем высокой контрастности
- Поддержка тем высокой контрастности в Windows 8 и более поздних версиях
- Добавление раздела совместимости в манифест приложения
- Обнаружение высокой контрастности в предыдущих версиях Windows
- Связанные статьи
Обзор поддержки тем высокой контрастности
Windows 7 и более ранних версий поддерживают две тематические модели, включая устаревшую классическую модель Windows и текущие визуальные стили. Классическая модель Windows была сохранена в Windows 7 в основном для поддержки различных тем высокой контрастности. Однако классическая модель Windows имеет ряд недостатков:
- Нет поддержки тем, использующих визуальные стили, например Windows Aero. Пользователи тем высокой контрастности должны использовать классический пользовательский интерфейс Windows.
- Поддержка функций пользовательского интерфейса, использующих диспетчер окон рабочего стола (DWM), не поддерживается, например предварительные просмотры эскизов и полноэкранный экранный экран, представленный в Windows 7.
- Разработчики должны поддерживать два отдельных пути кода для поддержки двух разных темных моделей.
В Windows 8 и более поздних версиях следующие изменения в модели их создания устраняют предыдущие недостатки:
- Классическая модель тем windows больше не поддерживается, что позволяет разработчикам поддерживать только один путь кода для приложений, предназначенных только для Windows 8.
- Так как визуальные стили и DWM находятся в Windows 8, пользователи с высокой контрастностью имеют доступ к таким функциям, как предварительные просмотры эскизов и полноэкранный луп.
- Визуальные стили поддерживают настройку цветов различных элементов пользовательского интерфейса, что позволяет пользователям с высокой контрастностью настраивать пользовательский интерфейс в соответствии с отдельными потребностями и предпочтениями.
- Windows 8 включает поддержку совместимости существующих приложений, предназначенных для использования тем высокой контрастности на основе классической модели тематических тем Windows.
Поддержка тем высокой контрастности в Windows 8 и более поздних версиях
В Windows 8, так как стили визуальных элементов находятся в режиме высокой контрастности, поддержка тем высокой контрастности проста, если вы захаживале следующие рекомендации.
- Размеры шрифтов и элементов управления. Чтобы пользовательский интерфейс был доступен пользователям с ограниченными возможностями, задайте размеры шрифтов в соответствии с текущими параметрами темы. Задайте размер элементов управления по крайней мере по умолчанию.
- Цвета. Избегайте использования жестко закодированных цветов. Вместо этого используйте системные цвета, так как они основаны на текущей теме. Использование пользовательских цветов может мешать и переопределять цвета в темах высокой контрастности.
- Манифест приложения. Приложения, предназначенные для работы с новыми темами высокой контрастности, должны иметь раздел совместимости приложений, определенный в манифесте, который содержит идентификаторы GUID совместимости Windows 8. В противном случае Windows предполагает, что приложение предназначено для более старой версии Windows и отрисовывает пользовательский интерфейс приложения, имитируя классическую модель темов Windows.
Добавление раздела совместимости в манифест приложения
Манифест приложения — это XML-файл, описывающий требования для приложения. Раздел совместимости манифеста определяет версии Windows, поддерживаемые приложением. Следующие идентификаторы GUID используются в разделе совместимости для идентификации различных версий Windows.
Версия | GUID |
---|---|
Windows Vista | {e2011457-1546-43c5-a5fe-008deee3d3f0} |
Windows 7 | {35138b9a-5d96-4fbd-8e2d-a24025f93a} |
Windows 8 | {4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38} |
Раздел совместимости может указывать несколько версий Windows, но каждый из них должен содержаться в собственном <supportedOS/>
теге. В следующем примере показан манифест приложения, указывающий Windows 7 и Windows 8 в разделе совместимости:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
</assembly>
Если у приложения нет манифеста совместимости, предполагается, что оно является приложением Windows Vista и не использует тематические элементы управления в клиентской области при активной теме высокой контрастности. Кроме того, влияет поведение некоторых функций визуальных стилей. Например, IsThemeActive, IsCompositionActive и IsAppThemed возвращают FALSE, а OpenThemeData и OpenThemeDataEx возвращают дескриптор NULL. Это предназначено для поддержки совместимости, чтобы приложения, созданные до Windows 8, по-прежнему могли отображать свой пользовательский интерфейс в том же режиме, что и режим высокой контрастности предыдущих версий Windows, где визуальные стили недоступны.
В Windows 8 приложение по-прежнему получает преимущества композиции настольных компьютеров. Это означает, например, что приложения удобства использования, такие как полноэкранный экран, не зависят от состояния манифеста отдельного приложения. Приложение с удобством использования продолжает работать в режиме высокой контрастности с приложением, которое не идентифицирует себя как совместимое с Windows 8 в своем манифесте.
На следующих изображениях показан простое диалоговое окно с высокой контрастностью в Windows 7.
На этом рисунке показан тот же диалог с высокой контрастностью в Windows 8, но с совместимостью Windows 7, указанной в манифесте приложения:
На этом рисунке показано то же диалоговое окно с высокой контрастностью в Windows 8 с Windows 8, указанным в манифесте приложения:
Обнаружение высокой контрастности в предыдущих версиях Windows
Приложения, работающие в предыдущих версиях Windows, не имеют доступа к новым темам высокой контрастности. Если приложение должно работать в предыдущих версиях, следует включить поддержку отрисовки пользовательского интерфейса в высокой контрастности в классической модели тем windows. Приложение может определить, активна ли тема высокой контрастности, вызвав функцию SystemParametersInfo с флагом SPI_GETHIGHCONTRAST.
См. также