Megosztás a következőn keresztül:


Vizuális stílusok engedélyezése

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á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.

  1. Hivatkozzon a ComCtl32.lib fájlra, és hajtsa végre InitCommonControls.

  2. 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>
    
  3. 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.

  1. Hivatkozzon a ComCtl32.lib fájlra, és hajtsa végre InitCommonControls.

  2. 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>
    
  3. 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.

  1. Á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 1
    

    Az ISOLATION_AWARE_ENABLED-ről bővebb információt a Összetevők elkülönítésecímű témakörben talál.

  2. Adja meg a közös vezérlőfejlécfájlt a beépülő modul forrásában.

    #include <commctrl.h>
    
  3. 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>
    
  4. 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.

vizuális stílusok