Delen via


Visuele stijlen inschakelen

In dit onderwerp wordt uitgelegd hoe u uw toepassing configureert om ervoor te zorgen dat algemene besturingselementen worden weergegeven in de voorkeursstijl van de gebruiker.

Dit onderwerp bevat de volgende secties.

Manifesten of richtlijnen gebruiken om ervoor te zorgen dat visuele stijlen kunnen worden toegepast op toepassingen

Als u wilt dat uw toepassing visuele stijlen gebruikt, moet u ComCtl32.dll versie 6 of hoger gebruiken. Omdat versie 6 niet herdistribueerbaar is, is deze alleen beschikbaar wanneer uw toepassing wordt uitgevoerd op een versie van Windows die deze bevat. Windows wordt geleverd met zowel versie 5 als versie 6. ComCtl32.dll versie 6 bevat zowel de besturingselementen van de gebruiker als de algemene besturingselementen. Toepassingen gebruiken standaard de gebruikersbesturingselementen die zijn gedefinieerd in User32.dll en de algemene besturingselementen die zijn gedefinieerd in ComCtl32.dll versie 5. Zie Common Control Versionsvoor een lijst met DLL-versies en de bijbehorende distributieplatforms.

Als u wilt dat uw toepassing visuele stijlen gebruikt, moet u een toepassingsmanifest of compilerrichtlijn toevoegen die aangeeft dat ComCtl32.dll versie 6 moet worden gebruikt als deze beschikbaar is.

Met een toepassingsmanifest kan een toepassing opgeven welke versies van een assembly deze nodig heeft. In Microsoft Win32 is een assembly een set DLL's en een lijst met versieerbare objecten die zich in deze DLL's bevinden.

Manifesten worden geschreven in XML. De naam van het manifestbestand van de toepassing is de naam van het uitvoerbare bestand gevolgd door de bestandsnaamextensie .manifest; bijvoorbeeld MyApp.exe.manifest. In het volgende voorbeeldmanifest ziet u dat in de eerste sectie het manifest zelf wordt beschreven. In de volgende tabel ziet u de kenmerken die zijn ingesteld door het element assemblyIdentity in de sectie beschrijving van het manifest.

Attribuut Beschrijving
Versie Versie van het manifest. De versie moet de vorm major.minor.revision.build hebben (dat wil gezegd n.n.n.n, waarbij n <=65535).
processorarchitectuur Processor waarvoor uw toepassing is ontwikkeld.
naam Bevat bedrijfsnaam, productnaam en toepassingsnaam.
soort Type van uw toepassing, zoals Win32.

 

Het voorbeeldmanifest bevat ook een beschrijving van uw toepassing en geeft toepassingsafhankelijkheden op. In de volgende tabel ziet u de kenmerken die zijn ingesteld door het element assemblyIdentity in de afhankelijkheidssectie.

Attribuut Beschrijving
soort Type van het afhankelijkheidsonderdeel, zoals Win32.
naam Naam van het onderdeel.
Versie Versie van het onderdeel.
processorarchitectuur Processor waarvoor het onderdeel is ontworpen.
publicKeyToken Sleuteltoken dat wordt gebruikt met dit onderdeel.
Taal Taal van het onderdeel.

 

Hieronder volgt een voorbeeld van een manifestbestand.

Belangrijk

Stel de vermelding processorArchitecture in op X86- als uw toepassing is gericht op het 32-bits Windows-platform of op 'amd64' als uw toepassing is gericht op het 64-bits Windows-platform. U kunt ook '*'opgeven, zodat alle platforms worden gericht, zoals wordt weergegeven in de volgende voorbeelden.

 

<?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>

Als u Microsoft Visual C++ 2005 of hoger gebruikt, kunt u de volgende compilerrichtlijn toevoegen aan uw broncode in plaats van handmatig een manifest te maken. Voor de leesbaarheid wordt de richtlijn in verschillende regels onderverdeeld.

#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

In de volgende onderwerpen worden de stappen beschreven voor het toepassen van visuele stijlen op verschillende typen toepassingen. U ziet dat de manifestindeling in elk geval hetzelfde is.

Het gebruik van ComCtl32.dll versie 6 in een toepassing die alleen gebruikmaakt van standaardextensies

Hieronder ziet u voorbeelden van toepassingen die geen extensies van derden gebruiken.

  • Rekenmachine
  • FreeCell (in Windows Vista en Windows 7)
  • Mijnenweeper (in Windows Vista en Windows 7)
  • Blocnote
  • Solitaire (in Windows Vista en Windows 7)

Een manifest maken en uw toepassing in staat stellen visuele stijlen te gebruiken.

  1. Koppel aan ComCtl32.lib en roep InitCommonControlsaan.

  2. Voeg een bestand met de naam YourApp.exe.manifest toe aan de bronstructuur met de XML-manifestindeling.

    <?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>
    
  3. Voeg het manifest als volgt toe aan het resourcebestand van uw toepassing:

    CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"
    

    Notitie

    Wanneer u de vorige vermelding aan de resource toevoegt, moet u deze op één regel opmaken. U kunt het XML-manifestbestand ook in dezelfde map plaatsen als het uitvoerbare bestand van uw toepassing. Het besturingssysteem laadt eerst het manifest vanuit het bestandssysteem en controleert vervolgens de resourcesectie van het uitvoerbare bestand. De versie van het bestandssysteem heeft voorrang.

     

Wanneer u uw toepassing bouwt, wordt het manifest toegevoegd als een binaire resource.

ComCtl32 versie 6 gebruiken in het Configuratiescherm of een DLL die wordt uitgevoerd door RunDll32.exe

Een manifest maken en uw toepassing in staat stellen visuele stijlen te gebruiken.

  1. Koppel aan ComCtl32.lib en roep InitCommonControlsaan.

  2. Voeg een bestand met de naam YourApp.cpl.manifest toe aan de bronstructuur met de XML-manifestindeling.

    <?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>
    
  3. Voeg het manifest toe aan het resourcebestand van uw toepassing als resource-id 123.

Notitie

Wanneer u een Configuratiescherm-toepassing maakt, plaatst u deze in de juiste categorie. Het Configuratiescherm ondersteunt nu categorisatie van Configuratiescherm-toepassingen. Dit betekent dat aan Configuratiescherm-toepassingen identificatoren kunnen worden toegewezen en kunnen worden onderverdeeld in taakgebieden zoals Programma's toevoegen of verwijderen, Vormgeving en Thema's, of Datum, Tijd, Taal en Landinstellingen.

 

Visuele stijlondersteuning toevoegen aan een extensie, invoegtoepassing, MMC-module of een DLL die in een proces wordt gebracht

Ondersteuning voor visuele stijlen kan worden toegevoegd aan een extensie, invoegtoepassing, MMC-module of een DLL die in een proces wordt gebracht. Gebruik bijvoorbeeld de volgende stappen om ondersteuning voor visuele stijlen toe te voegen voor een MMC-module (Microsoft Management Console).

  1. Compileer uw snap-in met de vlag -DISOLATION_AWARE_ENABLED of voeg de volgende instructie in vóór de instructie #include "windows.h".

    #define ISOLATION_AWARE_ENABLED 1
    

    Voor meer informatie over ISOLATION_AWARE_ENABLED, zie Onderdelen isoleren.

  2. Neem het common control header-bestand op in de snap-in bron.

    #include <commctrl.h>
    
  3. Voeg een bestand met de naam YourApp.manifest toe aan de bronstructuur die gebruikmaakt van de XML-manifestindeling.

    <?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>
    
  4. Voeg het manifest toe aan het resourcebestand van de snap-in. Zie ComCtl32 versie 6 gebruiken in een toepassing die gebruikmaakt van extensies, invoegtoepassingen of een DLL die wordt overgebracht naar een proces voor meer informatie over het toevoegen van een manifest aan een resourcebestand.

Visuele stijlen uitschakelen

U kunt visuele stijlen voor een besturingselement of voor alle besturingselementen in een venster uitschakelen door de functie SetWindowTheme als volgt aan te roepen:

SetWindowTheme(hwnd, L" ", L" ");

In het vorige voorbeeld is hwnd de handler van het venster waarin visuele stijlen moeten worden uitgeschakeld. Na de oproep wordt het besturingselement getoond zonder visuele stijlen.

Visuele stijlen gebruiken met HTML-inhoud

HTML-pagina's die de CSS-eigenschappen (Cascading Style Sheets) wijzigen, zoals achtergrond of rand, hebben geen visuele stijlen op deze pagina's toegepast. Ze geven het opgegeven CSS-kenmerk weer. Wanneer deze eigenschap is opgegeven als onderdeel van de inhoud, zijn de meeste CSS-eigenschappen van toepassing op elementen waarop visuele stijlen zijn toegepast.

Visuele stijlen worden standaard toegepast op intrinsieke HTML-besturingselementen op pagina's die worden weergegeven in Microsoft Internet Explorer 6 en latere versies. Als u visuele stijlen voor een HTML-pagina wilt uitschakelen, voegt u een META-tag toe aan de sectie <head>. Deze techniek is ook van toepassing op inhoud die is verpakt als HTML-toepassingen (HTA's). Als u visuele stijlen wilt uitschakelen, moet de META-tag er als volgt uitzien:

<META HTTP-EQUIV="MSThemeCompatible" CONTENT="no">

Notitie

Als de browserinstelling en de taginstelling niet akkoord gaan, past de pagina geen visuele stijlen toe. Als de META-tag bijvoorbeeld is ingesteld op Nee en de browser is ingesteld om visuele stijlen in te schakelen, worden visuele stijlen niet toegepast op de pagina. Als de browser- of META-tag echter is ingesteld op Ja en het andere item niet is opgegeven, worden visuele stijlen toegepast.

 

Visuele stijlen kunnen de indeling van uw inhoud wijzigen. Als u bepaalde kenmerken instelt voor intrinsieke HTML-besturingselementen, zoals de breedte van een knop, kan het zijn dat het label op de knop onleesbaar is onder bepaalde visuele stijlen.

U moet uw inhoud grondig testen met behulp van visuele stijlen om te bepalen of het toepassen van visuele stijlen een nadelig effect heeft op uw inhoud en indeling.

Wanneer visuele stijlen niet worden toegepast

Als u wilt voorkomen dat visuele stijlen worden toegepast op een venster op het hoogste niveau, geeft u het venster een niet-null-regio (SetWindowRgn). In het systeem wordt ervan uitgegaan dat een venster met een niet-NULL-regio een speciaal venster is dat geen visuele stijlen gebruikt. Een onderliggend venster dat is gekoppeld aan een venster met niet-visuele stijlen op het hoogste niveau, kan nog steeds visuele stijlen toepassen, zelfs als het bovenliggende venster dat niet doet.

Als u het gebruik van visuele stijlen voor alle vensters in uw toepassing wilt uitschakelen, roept u SetThemeAppProperties aan en laat u de vlag STAP_ALLOW_NONCLIENT weg. Als een toepassing SetThemeAppPropertiesniet aanroept, wordt uitgegaan van de veronderstelde vlagwaarden STAP_ALLOW_NONCLIENT | STAP_ALLOW_CONTROLS | STAP_ALLOW_WEBCONTENT. De veronderstelde waarden zorgen ervoor dat het niet-klantgebied, de besturingselementen en de webinhoud een visuele stijl toegepast krijgen.

Uw toepassing compatibel maken met eerdere versies van Windows

Veel van de architectuur van de visuele stijl is ontworpen om het eenvoudig te maken om uw product te blijven verzenden in eerdere versies van Windows die geen ondersteuning bieden voor het wijzigen van het uiterlijk van besturingselementen. Wanneer u een toepassing verzendt voor meer dan één besturingssysteem, moet u rekening houden met het volgende:

  • In versies van Windows vóór Windows 8 zijn visuele stijlen uitgeschakeld wanneer hoog contrast is ingeschakeld. Ter ondersteuning van hoog contrast moet een verouderde toepassing die visuele stijlen ondersteunt, een afzonderlijk codepad bieden om ui-elementen in hoog contrast correct te tekenen. In Windows 8 maakt hoog contrast deel uit van visuele stijlen; een Windows 8-toepassing (een toepassing die de Windows 8-GUID in de compatibiliteitssectie van het toepassingsmanifest bevat) moet echter nog steeds een afzonderlijk codepad opgeven om correct te worden weergegeven in Windows 7 en eerder.
  • Als u de functies in ComCtl32.dll versie 6, zoals de tegelweergave of het koppelingsbesturingselement, gebruikt, moet u de case afhandelen waarin deze besturingselementen niet beschikbaar zijn op de computer van uw gebruiker. ComCtl32.dll versie 6 is niet herdistribueerbaar.
  • Test uw toepassing om ervoor te zorgen dat u niet vertrouwt op functies van ComCtl32.dll versie 6 zonder eerst te controleren op de huidige versie.
  • Maak geen koppeling naar UxTheme.lib.
  • Schrijf code voor foutafhandeling voor exemplaren wanneer visuele stijlen niet werken zoals verwacht.
  • Het installeren van het manifest van uw toepassing in eerdere versies heeft geen invloed op het weergeven van besturingselementen.

visuele stijlen