Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a témakör azt ismerteti, hogyan konfigurálhatja az alkalmazást annak biztosítására, hogy a közös vezérlők a felhasználó által előnyben részesített vizuális stílusban jelenjenek meg.
Ez a témakör a következő szakaszokat tartalmazza.
- Jegyzékek vagy irányelvek használatával biztosíthatja, hogy a vizuális stílusok alkalmazhatók legyenek az alkalmazásokra
- ComCtl32.dll 6-os verziójának használata csak standard bővítményeket használó alkalmazásokban
- A ComCtl32 Version 6 használata a Vezérlőpultban vagy RunDll32.exe által futtatott DLL-ben
- Vizuális stílus támogatás hozzáadása bővítményhez, beépülő modulhoz, MMC beépülő modulhoz vagy egy folyamatba integrált DLL-hez
- vizuális stílusok kikapcsolása
- Vizuális stílusok használata HTML-tartalommal
- Ha a vizualizációstílusok nincsenek alkalmazva
- Az alkalmazás kompatibilissé tétele a Windows korábbi verzióival
- Kapcsolódó témakörök
Jegyzékek vagy irányelvek használata annak biztosítására, hogy a vizuális stílusok alkalmazhatók legyenek az alkalmazásokra
Ahhoz, hogy az alkalmazás vizuális stílusokat használhasson, ComCtl32.dll 6-os vagy újabb verziót kell használnia. Mivel a 6-os verzió nem terjeszthető újra, csak akkor érhető el, ha az alkalmazás a Windows azon verzióján fut, amely tartalmazza azt. A Windows az 5-ös és a 6-os verziót is használja. ComCtl32.dll 6-os verzió a felhasználói és a közös vezérlőket is tartalmazza. Alapértelmezés szerint az alkalmazások a User32.dll definiált felhasználói vezérlőket és az ComCtl32.dll 5-ös verziójában definiált közös vezérlőket használják. A DLL-verziók és a terjesztési platformok listáját a Common Control Versionscímű témakörben találja.
Ha azt szeretné, hogy az alkalmazás vizuális stílusokat használjon, hozzá kell adnia egy alkalmazásjegyzéket vagy egy fordító irányelvet, amely azt jelzi, hogy ComCtl32.dll 6-os verziót kell használni, ha elérhető.
Az alkalmazásjegyzék lehetővé teszi, hogy az alkalmazások megadják, hogy mely szerelvényverziókra van szükség. A Microsoft Win32-ben a szerelvény a DLL-ek halmaza, valamint az ezekben a DLL-ekben található verziószámozható objektumok listája.
A jegyzékek XML-ben vannak megírva. Az alkalmazás manifesztfájlának neve a végrehajtható fájl neve, amelyet a .manifest fájlnévkiterjesztés követ; például MyApp.exe.manifest. Az alábbi mintajegyzék azt mutatja be, hogy az első szakasz magát a jegyzékfájlt írja le. Az alábbi táblázat a jegyzékleírás szakasz assemblyIdentity eleme által beállított attribútumokat mutatja be.
| Attribútum | Leírás |
|---|---|
| verzió | A jegyzék verziója. A verziónak a major.minor.revision.build formában kell lennie (azaz n.n.n.n, ahol n <=65535). |
| processzor architektúra | Processzor, amelyhez az alkalmazást fejlesztik. |
| név | Tartalmazza a vállalat nevét, a termék nevét és az alkalmazás nevét. |
| típus | Az alkalmazás típusa, például a Win32. |
A mintajegyzék az alkalmazás leírását is tartalmazza, és meghatározza az alkalmazás függőségeit. Az alábbi táblázat a függőségi szakasz assemblyIdentity eleme által beállított attribútumokat mutatja be.
| Attribútum | Leírás |
|---|---|
| típus | A függőségi összetevő típusa, például Win32. |
| név | Az összetevő neve. |
| verzió | Az összetevő verziója. |
| processzor architektúra | Az a processzor, amelyre az összetevőt tervezték. |
| publicKeyToken | Az összetevőhöz használt kulcstoken. |
| Nyelv | Az összetevő nyelve. |
Az alábbi példa egy jegyzékfájlra mutat.
Fontos
Állítsa a processorArchitecture bejegyzést "X86" értékre, ha az alkalmazás 32 bites Windows platformra irányul, vagy "amd64" értékre, ha az alkalmazás 64 bites Windows platformra irányul. Megadhatja "*"is, amely biztosítja, hogy az összes platform célzott legyen, ahogyan az alábbi példák mutatják.
<?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>
Ha a Microsoft Visual C++ 2005-ös vagy újabb verzióját használja, a jegyzék manuális létrehozása helyett hozzáadhatja a forráskódhoz a következő fordítói irányelvet. Az olvashatóság érdekében az irányelv itt több sorra bontható.
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
Az alábbi témakörök a vizuális stílusok különböző típusú alkalmazásokra való alkalmazásának lépéseit ismertetik. Figyelje meg, hogy a jegyzékformátum minden esetben ugyanaz.
A ComCtl32.dll 6-os verziójának használata olyan alkalmazásban, amely csak standard bővítményeket használ
Az alábbi példák olyan alkalmazásokra mutatnak be példákat, amelyek nem használnak külső bővítményeket.
- Számológép
- FreeCell (Windows Vista és Windows 7 rendszerben)
- Aknakereső (Windows Vista és Windows 7 rendszerben)
- Jegyzettömb
- Pasziánsz (Windows Vista és Windows 7 rendszerben)
Jegyzék létrehozása és az alkalmazás vizuális stílusok használatának engedélyezése.
Hivatkozzon a ComCtl32.lib fájlra, és hajtsa végre InitCommonControls.
Adjon hozzá egy YourApp.exe.manifest nevű fájlt az XML-jegyzékformátummal rendelkező forrásfához.
<?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>Adja hozzá a jegyzékfájlt az alkalmazás erőforrásfájljához az alábbiak szerint:
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"Jegyzet
Amikor hozzáadja az előző bejegyzést az erőforráshoz, formázza azt egy sorba. Azt is megteheti, hogy az XML-jegyzékfájlt ugyanabban a könyvtárban helyezi el, mint az alkalmazás végrehajtható fájlja. Az operációs rendszer először betölti a jegyzékfájlt a fájlrendszerből, majd ellenőrzi a végrehajtható erőforrásszakaszt. A fájlrendszer verziója elsőbbséget élvez.
Az alkalmazás létrehozásakor a jegyzékfájl bináris erőforrásként lesz hozzáadva.
A ComCtl32 6-os verziójának használata a Vezérlőpulton vagy RunDll32.exe által futtatott DLL-fájllal
Jegyzék létrehozása és az alkalmazás vizuális stílusok használatának engedélyezése.
Hivatkozzon a ComCtl32.lib fájlra, és hajtsa végre InitCommonControls.
Adjon hozzá egy YourApp.cpl.manifest nevű fájlt az XML-jegyzékformátummal rendelkező forrásfához.
<?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>Adja hozzá a jegyzékfájlt az alkalmazás erőforrásfájljához 123-as erőforrás-azonosítóként.
Jegyzet
Vezérlőpult-alkalmazás létrehozásakor helyezze a megfelelő kategóriába. A Vezérlőpult mostantól támogatja a Vezérlőpult-alkalmazások kategorizálását. Ez azt jelenti, hogy a Vezérlőpult-alkalmazások hozzárendelhetők azonosítókhoz, és elkülöníthetők olyan tevékenységterületekre, mint a Programok hozzáadása vagy eltávolítása, a Megjelenés és témák, a Dátum, az Idő, a Nyelv és a Területi beállítások.
Vizuális stílus támogatásának hozzáadása egy bővítményhez, beépülő modulhoz, MMC beépülő modulhoz vagy egy folyamathoz hozott DLL-hez
A vizuális stílusok támogatása hozzáadható egy bővítményhez, beépülő modulhoz, MMC beépülő modulhoz vagy egy folyamatba kerülő DLL-hez. Az alábbi lépésekkel például vizuális stílusokat adhat hozzá a Microsoft Management Console (MMC) beépülő modulhoz.
Állítsa össze a beépülő modult a -DISOLATION_AWARE_ENABLED jelzővel, vagy szúrja be a következő utasítást a #include "windows.h" utasítás elé.
#define ISOLATION_AWARE_ENABLED 1Az ISOLATION_AWARE_ENABLED-ről bővebb információt a Összetevők elkülönítésecímű témakörben talál.
Adja meg a közös vezérlőfejlécfájlt a beépülő modul forrásában.
#include <commctrl.h>Adjon hozzá egy YourApp.manifest nevű fájlt a forrásfához, amely az XML-jegyzékformátumot használja.
<?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>Adja hozzá a jegyzékfájlt a beépülő modul erőforrásfájljához. A jegyzék erőforrásfájlhoz való hozzáadásának részleteiért tekintse meg A ComCtl32 6-os verziójának használata bővítményeket, beépülő modulokat vagy dll-eket használó alkalmazásokban,.
Vizuális stílusok kikapcsolása
Egy vezérlőelem vagy az ablak összes vezérlőjének vizuális stílusait kikapcsolhatja a SetWindowTheme függvény meghívásával az alábbiak szerint:
SetWindowTheme(hwnd, L" ", L" ");
Az előző példában hwnd annak az ablaknak a fogantyúja, amelyben le szeretné tiltani a vizuális stílusokat. A hívás után a vezérlő vizuális stílusok nélkül jelenik meg.
Vizuális stílusok használata HTML-tartalommal
Azok a HTML-lapok, amelyek módosítják a CSS-tulajdonságokat, például a hátteret vagy a szegélyt, nem vonatkoznak rájuk vizuális stílusok. A megadott CSS-attribútumot jelenítik meg. Ha a tartalom részeként van megadva, a legtöbb CSS-tulajdonság a vizualizációs stílusokat alkalmazó elemekre vonatkozik.
Alapértelmezés szerint a rendszer vizuális stílusokat alkalmaz a Microsoft Internet Explorer 6 és újabb verzióiban megjelenő lapok belső HTML-vezérlőire. Ha ki szeretné kapcsolni egy HTML-lap vizuális stílusát, vegyen fel egy META címkét a <head> szakaszba. Ez a technika a HTML-alkalmazásokként (HTA-k) csomagolt tartalmakra is vonatkozik. A vizuális stílusok kikapcsolásához a META-címkének a következőnek kell lennie:
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="no">
Jegyzet
Ha a böngészőbeállítás és a címkebeállítás nem egyezik meg, a lap nem fog vizuális stílusokat alkalmazni. Ha például a META címke "nem" értékre van állítva, és a böngésző úgy van beállítva, hogy engedélyezze a vizuális stílusokat, a program nem alkalmazza a vizualizációs stílusokat a lapra. Ha azonban a böngésző vagy a META címke "igen" értékre van állítva, és a másik elem nincs megadva, a program vizuális stílusokat alkalmaz.
A vizuális stílusok megváltoztathatják a tartalom elrendezését. Emellett, ha bizonyos attribútumokat a belső HTML-vezérlőkön, például egy gomb szélességén állít be, előfordulhat, hogy a gomb címkéje bizonyos vizuális stílusok esetén olvashatatlan.
Alaposan tesztelnie kell a tartalmat vizuális stílusokkal annak megállapításához, hogy a vizuális stílusok alkalmazása kedvezőtlen hatással van-e a tartalomra és az elrendezésre.
Ha a vizualizációstílusok nincsenek alkalmazva
Ha el szeretné kerülni a vizuális stílusok felső szintű ablakra való alkalmazását, adjon az ablaknak nem null régiót (SetWindowRgn). A rendszer feltételezi, hogy a nem NULL régiójú ablak egy speciális ablak, amely nem használ vizuális stílusokat. A nem vizuális stílusú felső szintű ablakhoz társított gyermekablakok továbbra is alkalmazhatnak vizuális stílusokat, még akkor is, ha a szülőablak nem.
Ha le szeretné tiltani a vizuális stílusok használatát az alkalmazás összes ablakában, hívja meg SetThemeAppProperties, és ne adja át a STAP_ALLOW_NONCLIENT jelzőt. Ha egy alkalmazás nem hívja meg a SetThemeAppPropertiesmetódust, akkor a STAP_ALLOW_NONCLIENT | STAP_ALLOW_CONTROLS | STAP_ALLOW_WEBCONTENT jelzőértékek feltételezettek. A feltételezett értékek miatt a nem ügyfél terület, a vezérlők és a webes tartalom vizuális stílust kap.
Az alkalmazás kompatibilissé tétele a Windows korábbi verzióival
A vizuális stílus architektúra nagy része úgy lett kialakítva, hogy egyszerűvé tegye a termék tovább szállítását a Windows korábbi verzióiban, amelyek nem támogatják a vezérlők megjelenésének módosítását. Ha egy alkalmazást több operációs rendszerre tervez szállítani, vegye figyelembe az alábbiakat:
- A Windows 8 előtti windowsos verziókban a vizuális stílusok ki vannak kapcsolva, ha a kontrasztos megjelenítés be van kapcsolva. A kontrasztos megjelenítés támogatásához a vizuális stílusokat támogató régi alkalmazásoknak külön kódútvonalat kell biztosítaniuk a felhasználói felület elemeinek kontrasztos rajzolásához. A Windows 8-ban a kontrasztos megjelenítés a vizuális stílusok része; Azonban egy Windows 8-alkalmazásnak (amely tartalmazza a Windows 8 GUID azonosítóját az alkalmazásjegyzék kompatibilitási szakaszában) továbbra is külön kódútvonalat kell biztosítania ahhoz, hogy a Windows 7-en a korábbiakban nagy kontrasztban jelenjen meg.
- Ha ComCtl32.dll 6-os verziójában használja a funkciókat, például a csempenézetet vagy a hivatkozásvezérlőt, akkor kezelnie kell azt az esetet, amikor ezek a vezérlők nem érhetők el a felhasználó számítógépén. ComCtl32.dll 6-os verzió nem terjeszthető újra.
- Tesztelje az alkalmazást, és győződjön meg arról, hogy nem támaszkodik ComCtl32.dll 6-os verziójának funkcióira anélkül, hogy először ellenőrizned kell az aktuális verziót.
- Ne hivatkozz az UxTheme.lib fájlra.
- Hibakezelő kód írása olyan példányokhoz, ahol a vizuális stílusok nem a várt módon működnek.
- Az alkalmazás jegyzékfájljának telepítése a korábbi verziókban nem befolyásolja a vezérlők megjelenítését.
Kapcsolódó témakörök