- artikel
- 06/30/2021
- 9 minuter att läsa
-
- j
- c
- D
- m
- m
i det här avsnittet beskrivs hur du konfigurerar programmet för att se till att vanliga kontroller visas i användarens föredragna visuella stil.
det här avsnittet innehåller följande avsnitt.
- använda manifest eller direktiv för att säkerställa att visuella stilar kan tillämpas på applikationer
- med ComCtl32.DLL Version 6 i ett program som endast använder standardtillägg
- med ComCtl32 Version 6 i kontrollpanelen eller en DLL som körs av RunDll32.exe
- lägga till visuell stil Stöd till en förlängning, Plug-in, MMC Snap-in eller en DLL som förs in i en Process
- stänga av visuella stilar
- använda visuella stilar med HTML-innehåll
- när visuella stilar inte tillämpas
- gör din ansökan kompatibel med tidigare versioner av Windows
- relaterade ämnen
- använda manifest eller direktiv för att säkerställa att visuella stilar kan tillämpas på applikationer
- Använda ComCtl32.DLL Version 6 i ett program som endast använder standardtillägg
- använda ComCtl32 Version 6 i kontrollpanelen eller en DLL som körs av RunDll32.exe
- lägga till visuell stil Stöd till en förlängning, Plug-in, MMC Snap-in eller en DLL som förs in i en Process
- stänga av visuella stilar
- använda visuella stilar med HTML-innehåll
- när visuella stilar inte tillämpas
- gör din applikation kompatibel med tidigare versioner av Windows
använda manifest eller direktiv för att säkerställa att visuella stilar kan tillämpas på applikationer
för att göra det möjligt för din applikation att använda visuella stilar måste du använda comctl32.dll version 6 eller senare. Eftersom version 6 inte kan vidaredistribueras är den endast tillgänglig när din applikation körs på en version av Windows som innehåller den. Windows levereras med både version 5 och version 6. ComCtl32.dll version 6 innehåller både användarkontrollerna och de vanliga kontrollerna. Som standard använder applikationer användarkontrollerna som definieras i User32.dll och de gemensamma kontroller som definieras i ComCtl32.dll version 5. En lista över DLL-versioner och deras distributionsplattformar finns i Common Control-versioner.
om du vill att din ansökan att använda visuella stilar, måste du lägga till ett program manifest eller kompilator direktiv som indikerar att ComCtl32.dll version 6 ska användas om den är tillgänglig.
ett applikationsmanifest gör det möjligt för ett program att ange vilka versioner av en sammansättning som krävs. I Microsoft Win32 är en sammansättning en uppsättning dll-filer och en lista över versionerbara objekt som finns i dessa dll-filer.
manifest är skrivna i XML. Namnet på programmet manifest-filen är namnet på din körbara följt av filnamnstillägget .manifest; till exempel MyApp.exe.manifest. Följande provmanifest visar att det första avsnittet beskriver manifestet själv. Följande tabell visar attributen som anges av elementet assemblyIdentity i avsnittet manifest description.
attribut | beskrivning |
---|---|
version | version av manifestet. Versionen måste vara i form major.mindre.översyn.bygga (det vill säga n. n.n.n, där n <=65535). |
processorarkitektur | Processor för vilken din applikation är utvecklad. |
namn | innehåller företagsnamn, produktnamn och Applikationsnamn. |
skriv | typ av din ansökan, till exempel Win32. |
exempelmanifestet ger också en beskrivning av din ansökan och anger applikationsberoende. Följande tabell visar attributen som anges av elementet assemblyIdentity i avsnittet beroende.
attribut | beskrivning |
---|---|
skriv | typ av beroendekomponent, till exempel Win32. |
namn | komponentens namn. |
version | version av komponenten. |
processorarkitektur | Processor som komponenten är avsedd för. |
publicKeyToken | Key token används med denna komponent. |
språk | komponentens språk. |
Följande är ett exempel på en manifest-fil.
viktigt
Ställ in processorArchitecture-posten till ” X86 ”om din applikation riktar sig till 32-bitars windows-plattformen eller till” amd64 ” om din applikation riktar sig till 64-bitars Windows-plattformen. Du kan också ange ”*”, vilket säkerställer att alla plattformar är riktade, som visas i följande exempel.
<?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>
om du använder Microsoft Visual C++ 2005 eller senare kan du lägga till följande kompilatordirektiv i källkoden istället för att manuellt skapa ett manifest. För läsbarhet är direktivet uppdelat i flera rader här.
#pragma comment(linker,"\"/manifestdependency:type='win32' \name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
följande avsnitt beskriver stegen för att tillämpa visuella stilar på olika typer av applikationer. Observera att manifest-formatet är detsamma i varje enskilt fall.
Använda ComCtl32.DLL Version 6 i ett program som endast använder standardtillägg
Följande är exempel på program som inte använder tredjepartstillägg.
- kalkylator
- FreeCell (i Windows Vista och Windows 7)
- minsvepare (i Windows Vista och Windows 7)
- anteckningar
- Solitaire (i Windows Vista och Windows 7)
för att skapa ett manifest och göra det möjligt för din ansökan att använda visuella stilar.
-
länk till ComCtl32.lib och ring InitCommonControls.
-
Lägg till en fil som heter YourApp.exe.manifest till ditt källkodsträd som har XML-manifest-formatet.
<?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>
-
Lägg till manifestet i programmets resursfil enligt följande:
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"
Obs!
när du lägger till föregående post i resursen måste du formatera den på en rad. Alternativt kan du placera XML-manifest-filen i samma katalog som programmets körbara fil. Operativsystemet laddar manifestet från filsystemet först och kontrollerar sedan resursavsnittet i den körbara filen. Filsystemversionen har företräde.
när du bygger din ansökan kommer manifestet att läggas till som en binär resurs.
använda ComCtl32 Version 6 i kontrollpanelen eller en DLL som körs av RunDll32.exe
för att skapa ett manifest och göra det möjligt för din applikation att använda visuella stilar.
-
länk till ComCtl32.lib och ring InitCommonControls.
-
Lägg till en fil som heter YourApp.CPL. manifest till ditt källkodsträd som har XML-manifest-formatet.
<?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>
-
Lägg till manifestet i programmets resursfil som resurs-ID 123.
Obs!
när du skapar ett Kontrollpanelsprogram placerar du det i lämplig kategori. Kontrollpanelen stöder nu kategorisering av Kontrollpanelapplikationer. Detta innebär att Kontrollpanelen program kan tilldelas identifierare och separeras i aktivitetsområden som lägga till eller ta bort program, utseende och teman, eller datum, tid, Språk och regionala alternativ.
lägga till visuell stil Stöd till en förlängning, Plug-in, MMC Snap-in eller en DLL som förs in i en Process
stöd för visuella stilar kan läggas till en förlängning, plug-in, MMC snap-in, eller en DLL som förs in i en process. Använd till exempel följande steg för att lägga till visuella stilar stöd för en Microsoft Management Console (MMC) snapin-modul.
-
kompilera din snap-in med flaggan-DISOLATION_AWARE_ENABLED eller sätt in följande uttalande före #include ”windows.h ” uttalande.
#define ISOLATION_AWARE_ENABLED 1
för mer information om ISOLATION_AWARE_ENABLED, se isolera komponenter.
-
inkludera den gemensamma kontrollhuvudfilen i din snap-in-Källa.
#include <commctrl.h>
-
Lägg till en fil som heter YourApp.manifest till ditt källkodsträd som använder XML-manifest-formatet.
<?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>
-
Lägg manifestet till din snap-in resurs fil. Mer information om hur du lägger till ett manifest i en resursfil finns i Använda ComCtl32 Version 6 i ett program som använder tillägg, plugin-program eller en DLL-fil som förs in i en Process.
stänga av visuella stilar
du kan stänga av visuella stilar för en kontroll eller för alla kontroller i ett fönster genom att anropa funktionen SetWindowTheme enligt följande:
SetWindowTheme(hwnd, L" ", L" ");
i föregående exempel är hwnd handtaget i fönstret för att inaktivera visuella stilar. Efter samtalet görs kontrollen utan visuella stilar.
använda visuella stilar med HTML-innehåll
HTML-sidor som ändrar CSS-egenskaper (Cascading Style Sheets), t.ex. bakgrund eller kantlinje, har inte visuella stilar tillämpade på dem. De visar det angivna CSS-attributet. När de anges som en del av innehållet gäller de flesta CSS-egenskaper för element som har visuella stilar tillämpade.
som standard tillämpas visuella format på inbyggda HTML-kontroller på sidor som visas i Microsoft Internet Explorer 6 och senare versioner. För att stänga av visuella stilar för en HTML-sida, lägg till en metatagg i avsnittet
. Denna teknik gäller även innehåll förpackat som HTML-applikationer (HTA). För att stänga av visuella stilar måste metataggen vara enligt följande:
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="no">
Obs
om webbläsarinställningen och tagginställningen inte överensstämmer, kommer sidan inte att tillämpa visuella stilar. Om metataggen till exempel är inställd på ”Nej” och webbläsaren är inställd på att aktivera visuella stilar, kommer visuella stilar inte att tillämpas på sidan. Men om antingen webbläsaren eller metataggen är inställd på ”Ja” och det andra objektet inte anges, kommer visuella stilar att tillämpas.
visuella stilar kan ändra layouten på ditt innehåll. Om du ställer in vissa attribut på inbyggda HTML-kontroller, till exempel bredden på en knapp, kanske du upptäcker att etiketten på knappen är oläslig under vissa visuella stilar.
du måste noggrant testa ditt innehåll med hjälp av visuella stilar för att avgöra om visuella stilar har en negativ inverkan på ditt innehåll och layout.
när visuella stilar inte tillämpas
för att undvika att använda visuella stilar på ett fönster på toppnivå, ge fönstret en region som inte är null (SetWindowRgn). Systemet förutsätter att ett fönster med en icke-NULL-region är ett specialiserat fönster som inte använder visuella stilar. Ett underordnat fönster som är associerat med ett fönster på toppnivå som inte är visuellt format kan fortfarande använda visuella format även om det överordnade fönstret inte gör det.
om du vill inaktivera användningen av visuella stilar för alla fönster i din applikation, Ring SetThemeAppProperties och passera inte STAP_ALLOW_NONCLIENT-flaggan. Om ett program inte anropar SetThemeAppProperties är de antagna flaggvärdena STAP_ALLOW_NONCLIENT | STAP_ALLOW_CONTROLS / STAP_ALLOW_WEBCONTENT. De antagna värdena gör att nonclient-området, kontrollerna och webbinnehållet får en visuell stil tillämpad.
gör din applikation kompatibel med tidigare versioner av Windows
mycket av den visuella stilarkitekturen är utformad för att göra det enkelt att fortsätta skicka din produkt på tidigare versioner av Windows som inte stöder att ändra utseendet på kontroller. När du skickar en applikation för mer än ett operativsystem, var medveten om följande:
- i versioner av Windows före Windows 8 är visuella stilar avstängda när hög kontrast är på. För att stödja hög kontrast måste ett äldre program som stöder visuella stilar tillhandahålla en separat kodväg för att korrekt rita gränssnittselement i hög kontrast. I Windows 8 är hög kontrast en del av visuella stilar; emellertid måste en Windows 8-applikation (en som innehåller Windows 8 GUID i kompatibilitetsavsnittet i dess applikationsmanifest) fortfarande tillhandahålla en separat kodväg för att återge korrekt i hög kontrast på Windows 7 tidigare.
- om du använder funktionerna i ComCtl32.DLL version 6, till exempel tile view eller link control, måste du hantera fallet där dessa kontroller inte är tillgängliga på användarens dator. ComCtl32.dll version 6 kan inte omfördelas.
- testa din ansökan för att se till att du inte litar på funktioner i ComCtl32.dll version 6 utan att först kontrollera den aktuella versionen.
- länka inte till UxTheme.lib.
- skriv felhanteringskod för instanser när visuella stilar inte fungerar som förväntat.
- installera programmets manifest i tidigare versioner påverkar inte rendering av kontroller.
Visuella Stilar