Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique explique comment configurer votre application pour vous assurer que les contrôles courants 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 vous assurer que les styles visuels peuvent être appliqués aux applications
- Utilisation de 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 plugin, un composant logiciel enfichable MMC ou une DLL insérée dans un processus
- Désactivation des styles visuels
- Utilisation de styles visuels avec du contenu HTML
- Quand 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 vous assurer 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. Étant donné que la version 6 n’est pas redistribuable, elle est disponible uniquement lorsque votre application s’exécute sur une version de Windows qui la contient. Windows est fourni avec la version 5 et la version 6. ComCtl32.dll version 6 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 obtenir la liste des versions de DLL et de leurs plateformes de distribution, consultez Versions des contrôles communs.
Si vous souhaitez que votre application utilise des styles visuels, vous devez ajouter une directive de manifeste ou de compilateur d’application qui indique que ComCtl32.dll version 6 doit être utilisée s’il 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 pouvant être versionnables contenus dans ces DLL.
Les manifestes sont écrits en XML. Le nom du fichier manifeste de l’application est le nom de votre exécutable suivi de l’extension de nom de fichier .manifest ; par exemple, MyApp.exe.manifest. 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.
| Caractéristique | Descriptif |
|---|---|
| Version | Version du manifeste. La version doit être sous la forme major.minor.revision.build (autrement dit, n.n.n.n, où n <=65535). |
| architecture du processeur | Processeur pour lequel votre application est développée. |
| nom | Inclut le nom de la société, le nom du produit et le nom de l’application. |
| type | Type de votre application, tel que Win32. |
L’exemple de manifeste fournit également une description de votre application et spécifie les dépendances d’application. Le tableau suivant montre les attributs définis par l’élément assemblyIdentity dans la section dépendance.
| Caractéristique | Descriptif |
|---|---|
| type | Type du composant de dépendance, tel que Win32. |
| nom | Nom du composant. |
| Version | Numéro de version du composant. |
| architecture du processeur | Processeur pour lequel le composant est conçu. |
| publicKeyToken | Jeton de clé utilisé avec ce composant. |
| Langue | Langue du composant. |
Voici un exemple de fichier manifeste.
Important
Définissez l’entrée processorArchitecturesur « X86 » si votre application cible la plateforme Windows 32 bits, ou sur « amd64 » si votre application cible la plateforme Windows 64 bits. Vous pouvez également spécifier « * », ce qui garantit que toutes les plateformes 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 version ultérieure, vous pouvez ajouter la directive du compilateur suivante à votre code source au lieu de créer manuellement un manifeste. Pour une 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 d’application de styles visuels à différents types d’applications. Notez que le format du manifeste est le même dans chaque cas.
Utilisation de 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 (dans Windows Vista et Windows 7)
- Minesweeper (dans Windows Vista et Windows 7)
- Bloc-notes
- Solitaire (dans 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.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 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 mettre en forme sur une 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 charge d’abord le manifeste à partir du système de fichiers, puis vérifiez la section des ressources de l’exécutable. La version du système de fichiers est prioritaire.
Lorsque vous générez votre application, le manifeste est 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 être affectées à des identificateurs et séparées dans des zones de tâches telles que l’ajout ou la suppression de programmes, l’apparence et les thèmes, ou date, heure, langue et 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 qui est introduite dans un processus. Par exemple, utilisez les étapes suivantes pour ajouter la prise en charge des styles visuels à un module logiciel enfichable MMC (Microsoft Management Console).
Compilez votre snap-in avec le drapeau -DISOLATION_AWARE_ENABLED ou insérez l’instruction suivante avant l’instruction #include « windows.h ».
#define ISOLATION_AWARE_ENABLED 1Pour plus d’informations sur ISOLATION_AWARE_ENABLED, consultez Isolation des composants.
Incluez le fichier d’en-tête de contrôle commun dans votre source enfichable.
#include <commctrl.h>Ajoutez un fichier appelé YourApp.manifest à 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 module logiciel. Consultez l’utilisation de ComCtl32 Version 6 dans une application qui utilise des extensions, des plug-ins ou une DLL qui est introduite dans un processus pour plus d’informations sur l’ajout d’un manifeste à un fichier de ressources.
Désactivation des styles visuels
Vous pouvez désactiver les styles visuels d’un contrôle ou de 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 le handle de la fenêtre dans laquelle désactiver les styles visuels. Après l'achèvement de 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 feuilles de style en cascade (CSS), telles que l’arrière-plan ou la bordure, n’ont pas de styles visuels appliqués. Ils affichent l’attribut CSS spécifié. Lorsqu’elles sont spécifiées dans le cadre du contenu, la plupart des propriétés CSS s’appliquent aux éléments qui ont des styles visuels appliqués.
Par défaut, les styles visuels sont appliqués aux contrôles HTML intrinsèques sur les pages affichées dans Microsoft Internet Explorer 6 et versions ultérieures. Pour désactiver les styles visuels d’une page HTML, ajoutez une balise META à la <head> section. Cette technique s’applique également au contenu empaqueté en tant qu’applications HTML (HTAs). Pour désactiver les styles visuels, la balise META doit être la suivante :
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="no">
Remarque
Si le paramètre du navigateur et le paramètre de balise ne sont pas d’accord, la page n’applique pas de styles visuels. Par exemple, si la balise META est définie sur « non » et que le navigateur est défini pour activer les styles visuels, les styles visuels ne sont pas appliqués à la page. Toutefois, si le navigateur ou la balise META est défini sur « oui » et que l’autre élément n’est pas spécifié, les styles visuels sont appliqués.
Les styles visuels peuvent modifier la disposition de votre contenu. En outre, 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 n’est pas lisible 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 disposition.
Quand les styles visuels ne sont pas appliqués
Pour éviter d’appliquer des styles visuels à une fenêtre de niveau supérieur, donnez à la fenêtre une région non null (SetWindowRgn). Le système suppose qu’une fenêtre avec une région non NULL 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 simplifier 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. Lors de l’expédition d’une application pour plusieurs systèmes d’exploitation, tenez compte 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 le contraste élevé, une application héritée qui prend en charge les styles visuels doit fournir un chemin de code distinct pour dessiner correctement les éléments d’interface utilisateur en contraste élevé. Dans Windows 8, le contraste élevé fait partie des styles visuels ; Toutefois, une application Windows 8 (qui inclut le GUID Windows 8 dans la section de compatibilité de son manifeste d’application) doit toujours fournir un chemin de code distinct pour s’afficher correctement en contraste élevé sur Windows 7 un peu plus tôt.
- Si vous utilisez les fonctionnalités de ComCtl32.dll version 6, telles que la vue de vignette 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.dll version 6 n’est pas redistribuable.
- Testez votre application pour vous assurer que vous ne vous appuyez pas sur les fonctionnalités de ComCtl32.dll version 6 sans d’abord vérifier la version actuelle.
- Ne pas lier à UxTheme.lib.
- Écrivez du code de gestion des erreurs pour les instances lorsque les styles visuels ne fonctionnent pas comme prévu.
- L’installation du manifeste de votre application dans les versions antérieures n’affecte pas le rendu des contrôles.
Rubriques connexes