- articol
- 06/30/2021
- 9 minute de citit
-
- j
- c
- D
- m
- m
acest subiect explică modul de configurare a aplicației dvs. pentru a vă asigura că comenzile comune sunt afișate în stilul vizual preferat al utilizatorului.
acest subiect include următoarele secțiuni.
- utilizarea manifestelor sau directivelor pentru a se asigura că stilurile vizuale pot fi aplicate aplicațiilor
- folosind ComCtl32.dll versiunea 6 Într-o aplicație care utilizează numai extensii Standard
- folosind ComCtl32 versiunea 6 în Panoul de Control sau un DLL care este rulat de RunDll32.exe
- adăugarea de suport stil vizual la o extensie, Plug-in, MMC Snap-in sau un DLL care este adus într-un proces
- dezactivarea stiluri vizuale
- utilizarea stiluri vizuale cu conținut HTML
- atunci când stiluri vizuale nu sunt aplicate
- a face aplicația compatibilă cu versiunile anterioare de Windows
- subiecte conexe
- utilizarea manifestelor sau directivelor pentru a vă asigura că stilurile vizuale pot fi aplicate aplicațiilor
- Folosind ComCtl32.dll versiunea 6 Într-o aplicație care utilizează numai extensii Standard
- folosind ComCtl32 versiunea 6 în Panoul de Control sau un DLL care este rulat de RunDll32.exe
- adăugarea de suport stil vizual la o extensie, Plug-in, MMC Snap-in sau un DLL care este adus într-un proces
- dezactivarea stilurilor vizuale
- Utilizarea stilurilor vizuale cu conținut HTML
- când stilurile vizuale nu sunt aplicate
- compatibilitatea aplicației cu versiunile anterioare de Windows
utilizarea manifestelor sau directivelor pentru a vă asigura că stilurile vizuale pot fi aplicate aplicațiilor
pentru a permite aplicației dvs. să utilizeze stiluri vizuale, trebuie să utilizați Comctl32.dll versiunea 6 sau mai târziu. Deoarece versiunea 6 nu este redistribuibilă, este disponibilă numai atunci când aplicația dvs. rulează pe o versiune de Windows care o conține. Windows este livrat atât cu versiunea 5, cât și cu versiunea 6. ComCtl32.dll versiunea 6 conține atât controalele de utilizator și controalele comune. În mod implicit, aplicațiile utilizează comenzile utilizatorului definite în User32.dll și controalele comune definite în ComCtl32.versiunea dll 5. Pentru o listă de versiuni DLL și platformele lor de distribuție, consultați versiuni comune de Control.
dacă doriți ca aplicația dvs. să utilizeze stiluri vizuale, trebuie să adăugați un manifest de aplicație sau o directivă de compilator care indică faptul că ComCtl32.dll versiunea 6 ar trebui utilizată dacă este disponibilă.
un manifest de aplicație permite unei aplicații să specifice ce versiuni ale unui ansamblu necesită. În Microsoft Win32, un ansamblu este un set de DLL-uri și o listă de obiecte versionabile care sunt conținute în aceste DLL-uri.
manifestele sunt scrise în XML. Numele fișierului manifest al aplicației este numele executabilului dvs. urmat de extensia numelui fișierului .manifest; de exemplu, MyApp.exe.manifest. Următorul manifest de probă arată că prima secțiune descrie manifestul în sine. Următorul tabel prezintă atributele stabilite de elementul assemblyIdentity în secțiunea manifest description.
atribut | descriere |
---|---|
versiunea | versiunea manifestului. Versiunea trebuie să fie în formă majoră.minor.revizuire.construiți (adică n. n. n. n, unde n < =65535). |
procesorarchitecture | procesor pentru care este dezvoltată aplicația dvs. |
nume | include numele companiei, Numele produsului și numele aplicației. |
tastați | Tipul aplicației dvs., cum ar fi Win32. |
manifestul eșantion oferă, de asemenea, o descriere a aplicației dvs. și specifică dependențele aplicației. Următorul tabel prezintă atributele stabilite de elementul assemblyIdentity în secțiunea dependență.
atribut | descriere |
---|---|
tastați | Tipul componentei de dependență, cum ar fi Win32. |
nume | numele componentei. |
versiune | versiune a componentei. |
procesorarchitecture | procesor pentru care este proiectată componenta. |
publicKeyToken | jeton cheie utilizat cu această componentă. |
limba | limba componentei. |
în urma este un exemplu de fișier manifest.
Important
setați intrarea processorArchitecture la „X86” dacă aplicația vizează platforma Windows pe 32 de biți sau la „amd64″ dacă aplicația vizează platforma Windows pe 64 de biți. De asemenea, puteți specifica”*”, care asigură că toate platformele sunt vizate, așa cum se arată în exemplele următoare.
<?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>
dacă utilizați Microsoft Visual C++ 2005 sau o versiune ulterioară, puteți adăuga următoarea directivă compilator la codul sursă în loc să creați manual un manifest. Pentru lizibilitate, directiva este împărțită în mai multe rânduri aici.
#pragma comment(linker,"\"/manifestdependency:type='win32' \name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
următoarele subiecte descriu pașii pentru aplicarea stilurilor vizuale la diferite tipuri de aplicații. Observați că formatul manifest este același în fiecare caz.
Folosind ComCtl32.dll versiunea 6 Într-o aplicație care utilizează numai extensii Standard
următoarele sunt exemple de aplicații care nu utilizează extensii terțe.
- Calculator
- FreeCell (în Windows Vista și Windows 7)
- Minesweeper (în Windows Vista și Windows 7)
- Notepad
- Solitaire (în Windows Vista și Windows 7)
pentru a crea un manifest și pentru a permite aplicației dvs. să utilizeze stiluri vizuale.
-
Link către ComCtl32.lib și apel InitCommonControls.
-
adăugați un fișier numit YourApp.exe.manifest pentru arborele sursă care are formatul Manifest 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>
-
adăugați manifestul în fișierul de resurse al aplicației dvs. după cum urmează:
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"
notă
când adăugați intrarea anterioară la resursă, trebuie să o formatați pe o singură linie. Alternativ, puteți plasa fișierul Manifest XML în același director ca fișierul executabil al aplicației. Sistemul de operare va încărca mai întâi Manifestul din sistemul de fișiere, apoi va verifica secțiunea de resurse a executabilului. Versiunea sistemului de fișiere are prioritate.
când vă construiți aplicația, manifestul va fi adăugat ca resursă binară.
folosind ComCtl32 versiunea 6 în Panoul de Control sau un DLL care este rulat de RunDll32.exe
pentru a crea un manifest și pentru a permite aplicației dvs. să utilizeze stiluri vizuale.
-
Link către ComCtl32.lib și apel InitCommonControls.
-
adăugați un fișier numit YourApp.CPL. manifest pentru arborele sursă care are formatul Manifest 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>
-
adăugați manifestul în fișierul de resurse al aplicației dvs. ca ID de resursă 123.
notă
când creați o aplicație din panoul de Control, plasați-o în categoria corespunzătoare. Panoul de Control acceptă acum clasificarea aplicațiilor panoului de Control. Aceasta înseamnă că aplicațiile panoului de Control pot fi atribuite identificatori și separate în zone de activitate, cum ar fi adăugarea sau eliminarea programelor, aspectul și temele sau data, ora, limba și opțiunile regionale.
adăugarea de suport stil vizual la o extensie, Plug-in, MMC Snap-in sau un DLL care este adus într-un proces
suport pentru stiluri vizuale pot fi adăugate la o extensie, plug-in, MMC snap-in, sau un DLL care este adus într-un proces. De exemplu, utilizați pașii următori pentru a adăuga suport stiluri vizuale pentru un snap-in Microsoft Management Console (MMC).
-
compilați snap-in-ul cu steagul-DISOLATION_AWARE_ENABLED sau introduceți următoarea instrucțiune înainte de #include „windows.h ” declarație.
#define ISOLATION_AWARE_ENABLED 1
pentru mai multe informații despre ISOLATION_AWARE_ENABLED, consultați izolarea componentelor.
-
includeți fișierul antet de control comun în sursa dvs. de completare snap-in.
#include <commctrl.h>
-
adăugați un fișier numit YourApp.manifest pentru arborele sursă care utilizează formatul Manifest 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>
-
adăugați manifestul în fișierul de resurse al snap-in-ului. Consultați Utilizarea ComCtl32 versiunea 6 într-o aplicație care utilizează extensii, Plug-in-uri sau un DLL care este adus într-un proces pentru detalii despre adăugarea unui manifest într-un fișier de resurse.
dezactivarea stilurilor vizuale
puteți dezactiva stilurile vizuale pentru un control sau pentru toate comenzile dintr-o fereastră apelând funcția SetWindowTheme după cum urmează:
SetWindowTheme(hwnd, L" ", L" ");
în exemplul anterior, hwnd este mânerul ferestrei în care să dezactivați stilurile vizuale. După apel, controlul se redă fără stiluri vizuale.
Utilizarea stilurilor vizuale cu conținut HTML
paginile HTML care modifică proprietățile foilor de stil în cascadă (CSS), cum ar fi fundalul sau bordura, nu au aplicate stiluri vizuale. Acestea afișează atributul CSS specificat. Când sunt specificate ca parte a conținutului, majoritatea proprietăților CSS se aplică elementelor care au stiluri vizuale aplicate.
în mod implicit, stilurile vizuale sunt aplicate comenzilor HTML intrinseci din paginile afișate în Microsoft Internet Explorer 6 și versiunile ulterioare. Pentru a dezactiva stilurile vizuale pentru o pagină HTML, adăugați o META tag la secțiunea
. Această tehnică se aplică și conținutului ambalat ca aplicații HTML (HTA). Pentru a dezactiva stilurile vizuale, meta tag-ul trebuie să fie după cum urmează:
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="no">
notă
Dacă setarea browserului și setarea etichetei nu sunt de acord, pagina nu va aplica stiluri vizuale. De exemplu, dacă eticheta META este setată la „nu” și browserul este setat să activeze stiluri vizuale, stilurile vizuale nu vor fi aplicate paginii. Cu toate acestea, dacă browserul sau meta tag-ul este setat la „da” și celălalt element nu este specificat, se vor aplica stiluri vizuale.
stilurile vizuale pot modifica aspectul conținutului. De asemenea, dacă setați anumite atribute pe controalele HTML intrinseci, cum ar fi lățimea unui buton, este posibil să constatați că eticheta de pe buton nu poate fi citită în anumite stiluri vizuale.
trebuie să testați temeinic conținutul utilizând stiluri vizuale pentru a determina dacă aplicarea stilurilor vizuale are un efect negativ asupra conținutului și aspectului.
când stilurile vizuale nu sunt aplicate
pentru a evita aplicarea stilurilor vizuale la o fereastră de nivel superior, dați ferestrei o regiune non-nulă (SetWindowRgn). Sistemul presupune că o fereastră cu o regiune non-nulă este o fereastră specializată care nu utilizează stiluri vizuale. O fereastră copil asociată cu o fereastră de nivel superior non-visual-styles poate aplica în continuare stiluri vizuale, chiar dacă fereastra părinte nu.
dacă doriți să dezactivați Utilizarea stilurilor vizuale pentru toate ferestrele din aplicația dvs., apelați SetThemeAppProperties și nu treceți steagul STAP_ALLOW_NONCLIENT. Dacă o aplicație nu apelează SetThemeAppProperties, valorile de pavilion presupuse sunt STAP_ALLOW_NONCLIENT | STAP_ALLOW_CONTROLS / STAP_ALLOW_WEBCONTENT. Valorile asumate determină ca zona nonclientă, controalele și conținutul web să aibă un stil vizual aplicat.
compatibilitatea aplicației cu versiunile anterioare de Windows
o mare parte din arhitectura stilului vizual este concepută pentru a simplifica continuarea expedierii produsului pe versiunile anterioare de Windows care nu acceptă modificarea aspectului comenzilor. Când expediați o aplicație pentru mai multe sisteme de operare, fiți conștienți de următoarele:
- în versiunile de Windows anterioare Windows 8, stilurile vizuale sunt dezactivate atunci când contrastul ridicat este activat. Pentru a susține contrastul ridicat, o aplicație veche care acceptă stiluri vizuale trebuie să ofere o cale de cod separată pentru a desena corect elementele UI în contrast ridicat. În Windows 8, contrastul ridicat face parte din stilurile vizuale; cu toate acestea, o aplicație Windows 8 (una care include GUID-ul Windows 8 în secțiunea de compatibilitate a Manifestului aplicației sale) trebuie să furnizeze încă o cale de cod separată pentru a reda corect în contrast ridicat pe Windows 7 o versiune anterioară.
- dacă utilizați caracteristicile din ComCtl32.dll versiunea 6, cum ar fi tile view sau link control, trebuie să se ocupe de cazul în care aceste controale nu sunt disponibile pe computerul utilizatorului. ComCtl32.dll versiunea 6 nu este redistribuibil.
- testați aplicația pentru a vă asigura că nu se bazează pe caracteristici ale ComCtl32.dll versiunea 6 fără a verifica mai întâi versiunea curentă.
- nu se leagă la UxTheme.lib.
- scrieți codul de manipulare a erorilor pentru cazurile în care stilurile vizuale nu funcționează conform așteptărilor.
- instalarea manifestului aplicației dvs. în versiunile anterioare nu va afecta redarea controalelor.
Stiluri Vizuale