Mode contraste élevé
Plateformes
Clients - Windows 8
Serveurs - Windows Server 2012
Description
Dans les systèmes d’exploitation Windows précédents, le mode à contraste élevé était limité aux thèmes s’exécutant sous des thèmes classiques, qui n’étaient pas visuellement stylés. Dans Windows 8 et Windows Server 2012, le mode classique a été supprimé et remplacé par des thèmes à contraste élevé visuellement. L’un des main avantages de cette modification est la suppression d’un chemin de code distinct pour les applications s’exécutant en mode classique.
Les développeurs doivent encore être informés de la façon dont le mode à contraste élevé peut affecter leur application et de la façon de développer une application véritablement indépendante du style. Cela est important, car si l’utilisation incorrecte ou l’hypothèse de couleurs de thème peut amener les applications à se comporter correctement sous un style visuel tel qu’Aero, ces mêmes applications répondent incorrectement en cas de contraste élevé. Par instance, dans Aero, le texte est toujours noir et la couleur de mise en surbrillance est un bleu clair. Dans le noir à contraste élevé, cependant, la couleur de mise en évidence est le noir. Si vous supposez du texte noir, comme cela a été le cas dans de nombreuses applications dans la boîte avant Windows 8, et que vous utilisez la valeur par défaut du système pour la mise en surbrillance, l’utilisateur voit le texte noir sur un arrière-plan noir. Dans ces situations, il est nécessaire de comprendre comment utiliser correctement les thèmes et les métriques système afin que l’application soit correcte d’un style à l’autre.
Manifestations
- Le thème n’est pas activé dans la zone cliente des applications qui ne contiennent pas de Windows 8 <balise supportedOS> dans leur manifeste d’application. Par conséquent, les applications doivent restituer la zone cliente, à l’aide du chemin d’accès de code requis pour le rendu en mode à contraste élevé du thème classique.
- Le thème n’est pas activé dans les zones non clientes et clientes des applications dans les thèmes à contraste élevé. Il n’est pas non plus activé dans les applications qui ne contiennent pas de Windows 8 <balise supportedOS> dans leur manifeste d’application et qui dessinent dans la zone non-client d’une fenêtre à l’aide de l’API DwnIsCompositionEnabled(). L’ensemble de l’application s’affiche en mode contraste élevé du thème classique.
- Les applications qui ajoutent la prise en charge des Windows 8 dans leur manifeste, mais n’utilisent pas de styles visuels pour le rendu, c’est-à-dire qu’elles codent en dur des couleurs ou des images dans leurs applications, peuvent ne pas s’afficher correctement dans les thèmes à contraste élevé. Le texte peut être difficile à lire ou les images peuvent ne pas apparaître comme elles le devraient en mode contraste élevé.
Limitation des risques
Les couleurs de texte dans les thèmes à contraste élevé ont été créées pour être conformes aux directives d’accessibilité Microsoft. Nous maintenons un rapport de contraste élevé de 14:1 entre le premier plan et l’arrière-plan. Si les couleurs activées par défaut ne conviennent pas à un utilisateur final particulier, elles peuvent facilement être personnalisées via les paramètres du panneau de configuration pour « Couleur de fenêtre » dans ces thèmes à contraste élevé.
Ces composants d’interface utilisateur sont personnalisables dans des thèmes à contraste élevé :
- Couleur d’arrière-plan de la fenêtre
- Couleur du texte
- Couleur des liens hypertexte
- Texte désactivé
- Couleurs de premier plan et d’arrière-plan du texte sélectionné
- Couleurs de premier plan et d’arrière-plan du titre de la fenêtre active
- Couleurs de premier plan et d’arrière-plan du titre de la fenêtre inactive
- Couleurs de premier plan et d’arrière-plan du bouton
Solution
Si un comportement inattendu est observé dans les applications dans des thèmes à contraste élevé, l’une de ces solutions peut vous aider :
Manifeste d’une application pour Windows 8 :
Les applications qui ne contiennent pas la Windows 8 <balise supportedOS> dans le manifeste de l’application auront leurs zones clientes affichées sans thème. Les applications dans la boîte de dialogue doivent toutes contenir cette entrée dans le manifeste de l’application. Ajoutez la valeur GUID 4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38 pour Windows 8.
Utilisation de styles visuels avec des interfaces utilisateur dessinées par le propriétaire :
Les contrôles dessinés par le propriétaire doivent suivre les instructions sur MSDN pour rendre correctement les parties et états de contrôle, y compris le texte. Les développeurs ne doivent pas s’appuyer sur le texte ou la couleur d’arrière-plan spécifiés dans un contexte d’appareil afin d’utiliser des méthodes autres que UxTheme pour le rendu. Dans le cas où il n’existe aucune partie de thème pour le contrôle en question, utilisez GetThemeSysColor avec la métrique appropriée et dessinez le texte à l’aide des méthodes GDI standard. Si aucun des appels UxTheme n’est approprié, utilisez la méthode GetSysColor pour obtenir la métrique appropriée.
Sélection de la couleur du texte :
N’utilisez pas de couleur de texte codé en dur, même si elle est supposée être correcte dans tous les scénarios courants. Les thèmes d’expédition sont créés de manière à prendre en charge une visibilité élevée avec les métriques associées. Par instance, COLOR_HIGHLIGHTTEXT est destiné à être utilisé avec COLOR_HIGHLIGHT comme arrière-plan et COLOR_WINDOWTEXT est destiné à être utilisé avec COLOR_WINDOW comme arrière-plan. S’il existe des exceptions à ces associations, utilisez-les dans les parties de thème et les définitions d’état elles-mêmes, et non dans le code. Lors de la conception d’interfaces utilisateur à contraste élevé, il est essentiel que l’interface utilisateur soit indépendante du thème à contraste élevé actuellement appliqué, car les utilisateurs à contraste élevé peuvent personnaliser leurs couleurs.
Réponse à WM_ThemeChange événement :
Si votre application met en cache les couleurs récupérées à partir du thème ou applique des couleurs non standard, ajoutez un gestionnaire de messages pour WM_THEMECHANGE qui recalcule les valeurs de couleur stockées et repeint l’interface utilisateur.
Écriture d’une application WWA à contraste élevé :
Les applications web n’ont pas accès aux API UxTheme, mais doivent toujours être écrites avec les métriques système actuelles comme base de l’interface utilisateur. Les développeurs WWA peuvent tirer parti de quelques ressources pour garantir une application conforme à contraste élevé :
- La spécification de couleur CSS W3C spécifie la syntaxe pour l’utilisation de métriques système au lieu de couleurs spécifiques
- La prise en charge des requêtes multimédias à contraste élevé est ajoutée à Internet Explorer 10
- Les WWAs peuvent tirer parti de la méthode IAccessibilityCapabilities::get_HighContrast() pour case activée l’état de contraste élevé
Les applications du Windows Store ne rencontrent pas beaucoup de problèmes liés aux composants de thème présents dans les applications Windows classiques, mais vous devez toujours garantir la conformité à contraste élevé. Par défaut, Internet Explorer ignore certains styles définis par l’utilisateur et les remplace par des valeurs conformes à contraste élevé. Par exemple, les propriétés CSS d’image d’arrière-plan, d’arrière-plan et de couleur sont ignorées.
Si vous ne souhaitez pas qu’Internet Explorer ignore les propriétés que vous définissez et que vous vous êtes assuré que l’interface utilisateur est conforme à un contraste élevé, vous pouvez définir la nouvelle propriété CSS M3 -ms-high-contrast: off sur un élément parent.
Écriture d’une application du Windows Store à contraste élevé :
L’application du Windows Store doit utiliser la classe SystemColors pour déterminer la coloration appropriée des éléments d’interface utilisateur, en gardant à l’esprit que certaines couleurs de métriques système sont conçues pour être utilisées conjointement, telles que SystemColors.WindowColor et SystemColors.WindowTextColor. Cela facilite une expérience de contraste élevé supérieure.
Détection correcte du contraste élevé dans les versions précédentes de Windows :
Les applications s’exécutant sur les versions précédentes de Windows n’ont pas accès aux nouveaux thèmes à contraste élevé, même si le manifeste spécifie la compatibilité avec la version de Windows en question. Par conséquent, il peut être nécessaire d’insérer des chemins de code supplémentaires pour gérer le rendu dans l’environnement classique utilisé dans les versions précédentes de Windows. La présence d’un contraste élevé dans ce cas doit être vérifiée en appelant la fonction SystemParametersInfo avec l’indicateur SPI_GETHIGHCONTRAST. Il s’agit de la seule façon prise en charge de vérifier la présence d’un contraste élevé.
Tests
Lors du test d’une application, assurez-vous qu’elle s’affiche correctement dans tous les thèmes dans la boîte de dialogue fournis par Windows 8 : Aero, Basic, High Contrast 1, High Contrast 2, High Contrast Black et High Contrast White. Assurez-vous que le texte est clairement visible et facile à lire dans les thèmes à contraste élevé.
Ressources
- Aero Style Classes, Parts et States (le nouveau thème de base et les thèmes à contraste élevé utilisent également ces états)
- Parties et états communs à tous les styles visuels
- Utilisation de styles visuels avec des contrôles personnalisés et Owner-Drawn
- GetSysColor, fonction
- W3C CSS Color Module Level 3
- SystemColors, classe
- Fonction SystemParametersInfo
- Accessibilité Microsoft