- Article
- 06/30/2021
- 9 minutes à lire
-
- j
- c
- D
- m
- m
Cette rubrique explique comment configurer votre application pour s’assurer que les contrôles communs sont affichés dans le style visuel préféré de l’utilisateur.
Cette rubrique comprend les sections suivantes.
- Utilisation de Manifestes ou de Directives pour Garantir Que Les Styles Visuels Peuvent Être Appliqués aux Applications
- Utilisant ComCtl32.dll Version 6 dans une Application Qui Utilise Uniquement Des Extensions Standard
- Utilisant ComCtl32 Version 6 dans le Panneau de Configuration ou une DLL Exécutée par RunDll32.exe
- Ajout de la Prise en Charge du Style Visuel à une Extension, un Plug-in, un Composant Logiciel Enfichable MMC ou une DLL Introduite dans un Processus
- Désactivation des Styles Visuels
- Utilisation de Styles Visuels avec du Contenu HTML
- Lorsque les Styles Visuels ne sont pas Appliqués
- Rendre Votre Application Compatible avec les Versions antérieures de Windows
- Rubriques connexes
- Utilisation de Manifestes ou de directives pour Garantir Que les Styles visuels Peuvent Être appliqués aux Applications
- En utilisant ComCtl32.dll Version 6 dans une Application Qui Utilise Uniquement des Extensions standard
- Utilisation de ComCtl32 Version 6 dans le Panneau de configuration ou d’une DLL Exécutée par RunDll32.exe
- Ajout de la prise en charge du Style visuel à une Extension, un Plug-in, un composant logiciel enfichable MMC ou une DLL Introduite dans un Processus
- Désactivation des styles visuels
- Utilisation de Styles visuels avec du Contenu HTML
- Lorsque les styles visuels ne sont pas appliqués
- Rendre votre Application compatible avec les versions antérieures de Windows
Utilisation de Manifestes ou de directives pour Garantir Que les Styles visuels Peuvent Être appliqués aux Applications
Pour permettre à votre application d’utiliser des styles visuels, vous devez utiliser ComCtl32.dll version 6 ou ultérieure. La version 6 n’étant pas redistribuable, elle n’est disponible que lorsque votre application s’exécute sur une version de Windows qui la contient. Windows est livré avec la version 5 et la version 6. ComCtl32.la version 6 de la dll contient à la fois les contrôles utilisateur et les contrôles communs. Par défaut, les applications utilisent les contrôles utilisateur définis dans User32.dll et les contrôles communs définis dans ComCtl32.dll version 5. Pour une liste des versions de DLL et de leurs plates-formes de distribution, voir Versions de contrôle communes.
Si vous souhaitez que votre application utilise des styles visuels, vous devez ajouter un manifeste d’application ou une directive de compilation qui indique que ComCtl32.la version 6 de la dll doit être utilisée si elle est disponible.
Un manifeste d’application permet à une application de spécifier les versions d’un assembly dont elle a besoin. Dans Microsoft Win32, un assembly est un ensemble de DLL et une liste d’objets versionnables contenus dans ces DLL.
Les manifestes sont écrits en XML. Le nom du fichier manifeste d’application est le nom de votre exécutable suivi de l’extension de nom de fichier.manifester; par exemple, MyApp.EXE.manifester. L’exemple de manifeste suivant montre que la première section décrit le manifeste lui-même. Le tableau suivant montre les attributs définis par l’élément assemblyIdentity dans la section Description du manifeste.
Attribut | Description |
---|---|
version | Version du manifeste. La version doit être sous la forme majeure.mineur.révision.construire (c’est-à-dire n.n.n.n, où n< = 65535). |
processorArchitecture | Processeur pour lequel votre application est développée. |
le nom | Comprend le nom de l’entreprise, le nom du produit et le nom de l’application. |
tapez le type | de votre application, tel que Win32. |
L’exemple de manifeste fournit également une description de votre application et spécifie les dépendances de l’application. Le tableau suivant montre les attributs définis par l’élément assemblyIdentity dans la section dépendance.
Attribut | Description |
---|---|
tapez | Type du composant de dépendance, tel que Win32. |
nom | Nom du composant. |
version | Version du composant. |
processorArchitecture | Processeur pour lequel le composant est conçu. |
Jeton de clé publicKeyToken | utilisé avec ce composant. |
langue | Langue du composant. |
Voici un exemple de fichier manifeste.
Important
Définissez l’entrée processorArchitecture sur « X86″ si votre application cible la plate-forme Windows 32 bits, ou sur » amd64″ si votre application cible la plate-forme Windows 64 bits. Vous pouvez également spécifier « * », ce qui garantit que toutes les plates-formes sont ciblées, comme indiqué dans les exemples suivants.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="CompanyName.ProductName.YourApplication" type="win32"/><description>Your application description here.</description><dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly></dependency></assembly>
Si vous utilisez Microsoft Visual C++ 2005 ou une version ultérieure, vous pouvez ajouter la directive de compilation suivante à votre code source au lieu de créer manuellement un manifeste. Pour plus de lisibilité, la directive est divisée en plusieurs lignes ici.
#pragma comment(linker,"\"/manifestdependency:type='win32' \name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
Les rubriques suivantes décrivent les étapes à suivre pour appliquer des styles visuels à différents types d’applications. Notez que le format du manifeste est le même dans chaque cas.
En utilisant ComCtl32.dll Version 6 dans une Application Qui Utilise Uniquement des Extensions standard
Voici des exemples d’applications qui n’utilisent pas d’extensions tierces.
- Calculatrice
- FreeCell (sous Windows Vista et Windows 7)
- Dragueur de mines (sous Windows Vista et Windows 7)
- Bloc-notes
- Solitaire (sous Windows Vista et Windows 7)
Pour créer un manifeste et permettre à votre application d’utiliser des styles visuels.
-
Lien vers ComCtl32.lib et appelez InitCommonControls.
-
Ajoutez un fichier appelé YourApp.EXE.manifeste dans votre arborescence source qui a le format de manifeste XML.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="CompanyName.ProductName.YourApplication" type="win32"/><description>Your application description here.</description><dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly></dependency></assembly>
-
Ajoutez le manifeste au fichier de ressources de votre application comme suit:
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"
Remarque
Lorsque vous ajoutez l’entrée précédente à la ressource, vous devez la formater sur une seule ligne. Vous pouvez également placer le fichier manifeste XML dans le même répertoire que le fichier exécutable de votre application. Le système d’exploitation chargera d’abord le manifeste à partir du système de fichiers, puis vérifiera la section des ressources de l’exécutable. La version du système de fichiers a priorité.
Lorsque vous créez votre application, le manifeste sera ajouté en tant que ressource binaire.
Utilisation de ComCtl32 Version 6 dans le Panneau de configuration ou d’une DLL Exécutée par RunDll32.exe
Pour créer un manifeste et permettre à votre application d’utiliser des styles visuels.
-
Lien vers ComCtl32.lib et appelez InitCommonControls.
-
Ajoutez un fichier appelé YourApp.cpl.manifest à votre arborescence source qui a le format de manifeste XML.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="CompanyName.ProductName.YourApplication" type="win32"/><description>Your application description here.</description><dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly></dependency></assembly>
-
Ajoutez le manifeste au fichier de ressources de votre application en tant qu’ID de ressource 123.
Remarque
Lorsque vous créez une application du panneau de configuration, placez-la dans la catégorie appropriée. Le panneau de configuration prend désormais en charge la catégorisation des applications du panneau de configuration. Cela signifie que les applications du Panneau de configuration peuvent se voir attribuer des identifiants et être séparées en zones de tâches telles que l’Ajout ou la Suppression de programmes, l’Apparence et les Thèmes, ou la Date, l’Heure, la Langue et les Options Régionales.
Ajout de la prise en charge du Style visuel à une Extension, un Plug-in, un composant logiciel enfichable MMC ou une DLL Introduite dans un Processus
La prise en charge des styles visuels peut être ajoutée à une extension, un plug-in, un composant logiciel enfichable MMC ou une DLL introduite dans un processus. Par exemple, suivez les étapes suivantes pour ajouter la prise en charge des styles visuels pour un composant logiciel enfichable Microsoft Management Console (MMC).
-
Compilez votre composant logiciel enfichable avec l’indicateur -DISOLATION_AWARE_ENABLED ou insérez l’instruction suivante avant les fenêtres #include ».déclaration h ».
#define ISOLATION_AWARE_ENABLED 1
Pour plus d’informations sur ISOLATION_AWARE_ENABLED, consultez Isoler les composants.
-
Incluez le fichier d’en-tête de contrôle commun dans votre source de composant logiciel enfichable.
#include <commctrl.h>
-
Ajoutez un fichier appelé YourApp.manifeste dans votre arborescence source qui utilise le format de manifeste XML.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="CompanyName.ProductName.YourApplication" type="win32"/><description>Your application description here.</description><dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly></dependency></assembly>
-
Ajoutez le manifeste au fichier de ressources de votre composant logiciel enfichable. Voir Utilisation de ComCtl32 Version 6 dans une Application Qui Utilise des Extensions, des Plug-ins ou une DLL Introduite dans un Processus pour plus de détails sur l’ajout d’un manifeste à un fichier de ressources.
Désactivation des styles visuels
Vous pouvez désactiver les styles visuels pour un contrôle ou pour tous les contrôles d’une fenêtre en appelant la fonction SetWindowTheme comme suit:
SetWindowTheme(hwnd, L" ", L" ");
Dans l’exemple précédent, hwnd est la poignée de la fenêtre dans laquelle désactiver les styles visuels. Après l’appel, le contrôle s’affiche sans styles visuels.
Utilisation de Styles visuels avec du Contenu HTML
Les pages HTML qui modifient les propriétés des Feuilles de style en cascade (CSS), telles que l’arrière-plan ou la bordure, n’ont pas de styles visuels qui leur sont appliqués. Ils affichent l’attribut CSS spécifié. Lorsqu’elles sont spécifiées dans le contenu, la plupart des propriétés CSS s’appliquent aux éléments auxquels des styles visuels sont appliqués.
Par défaut, les styles visuels sont appliqués aux contrôles HTML intrinsèques des pages affichées dans Microsoft Internet Explorer 6 et les versions ultérieures. Pour désactiver les styles visuels d’une page HTML, ajoutez une balise META à la section
. Cette technique s’applique également au contenu empaqueté en tant qu’applications HTML (HTA). Pour désactiver les styles visuels, la balise META doit être la suivante:
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="no">
Remarque
Si les paramètres du navigateur et de la balise ne sont pas d’accord, la page n’appliquera pas de styles visuels. Par exemple, si la balise META est définie sur « non » et que le navigateur est configuré pour activer les styles visuels, les styles visuels ne seront pas appliqués à la page. Cependant, si le navigateur ou la balise META sont définis sur « oui » et que l’autre élément n’est pas spécifié, les styles visuels seront appliqués.
Les styles visuels peuvent modifier la mise en page de votre contenu. De plus, si vous définissez certains attributs sur des contrôles HTML intrinsèques, tels que la largeur d’un bouton, vous pouvez constater que l’étiquette sur le bouton est illisible sous certains styles visuels.
Vous devez tester soigneusement votre contenu à l’aide de styles visuels pour déterminer si l’application de styles visuels a un effet négatif sur votre contenu et votre mise en page.
Lorsque les styles visuels ne sont pas appliqués
Pour éviter d’appliquer des styles visuels à une fenêtre de niveau supérieur, attribuez à la fenêtre une région non nulle (SetWindowRgn). Le système suppose qu’une fenêtre avec une région non NULLE est une fenêtre spécialisée qui n’utilise pas de styles visuels. Une fenêtre enfant associée à une fenêtre de niveau supérieur de styles non visuels peut toujours appliquer des styles visuels même si la fenêtre parente ne le fait pas.
Si vous souhaitez désactiver l’utilisation de styles visuels pour toutes les fenêtres de votre application, appelez SetThemeAppProperties et ne passez pas l’indicateur STAP_ALLOW_NONCLIENT. Si une application n’appelle pas SetThemeAppProperties, les valeurs d’indicateur supposées sont STAP_ALLOW_NONCLIENT|STAP_ALLOW_CONTROLS|STAP_ALLOW_WEBCONTENT. Les valeurs supposées entraînent l’application d’un style visuel à la zone non cliente, aux contrôles et au contenu Web.
Rendre votre Application compatible avec les versions antérieures de Windows
Une grande partie de l’architecture de style visuel est conçue pour faciliter la poursuite de l’expédition de votre produit sur des versions antérieures de Windows qui ne prennent pas en charge la modification de l’apparence des contrôles. Lorsque vous expédiez une application pour plus d’un système d’exploitation, soyez conscient des éléments suivants:
- Dans les versions de Windows antérieures à Windows 8, les styles visuels sont désactivés lorsque le contraste élevé est activé. Pour prendre en charge un contraste élevé, une application héritée prenant en charge les styles visuels doit fournir un chemin de code séparé pour dessiner correctement des éléments d’interface utilisateur à contraste élevé. Dans Windows 8, le contraste élevé fait partie des styles visuels; cependant, une application Windows 8 (qui inclut le GUID Windows 8 dans la section compatibilité de son manifeste d’application) doit toujours fournir un chemin de code séparé pour afficher correctement un contraste élevé sur Windows 7 un plus tôt.
- Si vous utilisez les fonctionnalités de ComCtl32.dll version 6, telle que la vue de mosaïque ou le contrôle de lien, vous devez gérer le cas où ces contrôles ne sont pas disponibles sur l’ordinateur de votre utilisateur. ComCtl32.la version 6 de la dll n’est pas redistribuable.
- Testez votre application pour vous assurer que vous ne vous fiez pas aux fonctionnalités de ComCtl32.dll version 6 sans vérification préalable de la version actuelle.
- Ne pas lier à UxTheme.lib.
- Écrivez du code de gestion des erreurs pour les instances où les styles visuels ne fonctionnent pas comme prévu.
- L’installation du manifeste de votre application dans les versions antérieures n’affectera pas le rendu des contrôles.
Styles visuels