- Articolo
- 06/30/2021
- 9 minuti a leggere
-
- j
- c
- D
- m
- m
Questo argomento spiega come configurare l’applicazione per garantire che i controlli comuni vengano visualizzati nello stile visivo preferito dall’utente.
Questo argomento include le seguenti sezioni.
- Utilizzo di manifesti o direttive per garantire che gli stili visivi possano essere applicati alle applicazioni
- Utilizzando ComCtl32.dll versione 6 in un’applicazione che utilizza solo estensioni standard
- Utilizzando ComCtl32 Versione 6 nel pannello di controllo o una DLL eseguita da RunDll32.exe
- l’Aggiunta di Supporto per lo Stile Visivo di un’Estensione, Plug-in, Snap-in di MMC o una DLL Che Viene Portato in un Processo di
- Spegnimento Visual Styles
- Utilizza Stili di visualizzazione con Contenuto HTML
- Quando gli Stili non sono Applicati
- Rendere l’Applicazione Compatibile con le Versioni Precedenti di Windows
- argomenti Correlati
- Utilizzo di Manifesti o Direttive per Assicurare Che gli Stili Possono Essere Applicati alle Applicazioni
- Utilizzando ComCtl32.dll versione 6 in un’applicazione che utilizza solo estensioni standard
- Utilizzo di ComCtl32 Versione 6 nel Pannello di controllo o di una DLL gestita da RunDll32.exe
- Aggiunta del supporto per lo stile visivo a un’estensione, plug-in, snap-in MMC o a una DLL inserita in un processo
- Spegnimento Visual Styles
- Utilizzo di stili visivi con contenuto HTML
- Quando gli stili visivi non vengono applicati
- Rendere l’applicazione compatibile con le versioni precedenti di Windows
Utilizzo di Manifesti o Direttive per Assicurare Che gli Stili Possono Essere Applicati alle Applicazioni
Per attivare l’applicazione per utilizzare gli stili visivi, è necessario utilizzare ComCtl32.dll versione 6 o successiva. Poiché la versione 6 non è ridistribuibile, è disponibile solo quando l’applicazione è in esecuzione su una versione di Windows che la contiene. Windows viene fornito sia con la versione 5 che con la versione 6. ComCtl32.dll versione 6 contiene sia i controlli utente e controlli comuni. Per impostazione predefinita, le applicazioni utilizzano i controlli utente definiti in User32.dll e i controlli comuni definiti in ComCtl32.dll versione 5. Per un elenco delle versioni DLL e delle relative piattaforme di distribuzione, vedere Versioni di controllo comuni.
Se si desidera che l’applicazione utilizzi stili visivi, è necessario aggiungere una direttiva manifest o compilatore dell’applicazione che indica che ComCtl32.dll versione 6 dovrebbe essere utilizzato se è disponibile.
Un manifesto dell’applicazione consente a un’applicazione di specificare quali versioni di un assembly richiede. In Microsoft Win32, un assembly è un insieme di DLL e un elenco di oggetti versionabili contenuti all’interno di tali DLL.
I manifesti sono scritti in XML. Il nome del file manifesto dell’applicazione è il nome dell’eseguibile seguito dall’estensione del nome del file .manifestare; ad esempio, MyApp.exe.manifestare. Il seguente esempio manifest mostra che la prima sezione descrive il manifest stesso. La tabella seguente mostra gli attributi impostati dall’elemento assemblyIdentity nella sezione manifest description.
Attributo | Descrizione |
---|---|
versione | Versione del manifesto. La versione deve essere nella forma maggiore.minore.revisione.costruire (cioè, n. n. n. n, dove n < =65535). |
processorArchitecture | Processore per il quale è stata sviluppata l’applicazione. |
nome | Include il nome dell’azienda, il nome del prodotto e il nome dell’applicazione. |
digitare | Tipo di applicazione, ad esempio Win32. |
Il manifesto di esempio fornisce anche una descrizione dell’applicazione e specifica le dipendenze dell’applicazione. La tabella seguente mostra gli attributi impostati dall’elemento assemblyIdentity nella sezione dipendenze.
Attributo | Descrizione |
---|---|
digitare | Tipo del componente di dipendenza, ad esempio Win32. |
nome | Nome del componente. |
versione | Versione del componente. |
processorArchitecture | Processore per cui il componente è progettato. |
publicKeyToken | Token chiave utilizzato con questo componente. |
lingua | Lingua del componente. |
Di seguito è riportato un esempio di un file manifest.
Importante
Impostare la voce processorArchitecture su “X86” se l’applicazione si rivolge alla piattaforma Windows a 32 bit o su “amd64″ se l’applicazione si rivolge alla piattaforma Windows a 64 bit. È inoltre possibile specificare”*”, che garantisce che tutte le piattaforme siano mirate, come mostrato negli esempi seguenti.
<?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>
Se si utilizza Microsoft Visual C++ 2005 o versione successiva, è possibile aggiungere la seguente direttiva del compilatore al codice sorgente anziché creare manualmente un manifest. Per leggibilità, la direttiva è suddivisa in più righe qui.
#pragma comment(linker,"\"/manifestdependency:type='win32' \name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
I seguenti argomenti descrivono i passaggi per l’applicazione di stili visivi a diversi tipi di applicazioni. Si noti che il formato manifest è lo stesso in ogni caso.
Utilizzando ComCtl32.dll versione 6 in un’applicazione che utilizza solo estensioni standard
Di seguito sono riportati esempi di applicazioni che non utilizzano estensioni di terze parti.
- Calcolatrice
- FreeCell (in Windows Vista e Windows 7)
- Minesweeper (in Windows Vista e Windows 7)
- blocco note
- Solitario (in Windows Vista e Windows 7)
Per creare un manifesto e attivare l’applicazione per utilizzare gli stili visivi.
-
Collegamento a ComCtl32.lib e chiama InitCommonControls.
-
Aggiungi un file chiamato YourApp.exe.manifest all’albero dei sorgenti che ha il formato 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>
-
Aggiungi il manifest al file di risorse dell’applicazione come segue:
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"
Nota
Quando si aggiunge la voce precedente alla risorsa è necessario formattarla su una riga. In alternativa, è possibile posizionare il file manifest XML nella stessa directory del file eseguibile dell’applicazione. Il sistema operativo caricherà prima il manifest dal file system, quindi controllerà la sezione risorse dell’eseguibile. La versione del file system ha la precedenza.
Quando si crea l’applicazione, il manifest verrà aggiunto come risorsa binaria.
Utilizzo di ComCtl32 Versione 6 nel Pannello di controllo o di una DLL gestita da RunDll32.exe
Per creare un manifesto e consentire all’applicazione di utilizzare stili visivi.
-
Collegamento a ComCtl32.lib e chiama InitCommonControls.
-
Aggiungi un file chiamato YourApp.cpl. manifest all’albero dei sorgenti che ha il formato 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>
-
Aggiungi il manifest al file di risorse dell’applicazione come ID risorsa 123.
Nota
Quando si crea un’applicazione del pannello di controllo, posizionarla nella categoria appropriata. Pannello di controllo ora supporta la categorizzazione delle applicazioni del pannello di controllo. Ciò significa che alle applicazioni del pannello di controllo possono essere assegnati identificatori e separati in aree attività come Aggiungere o rimuovere programmi, Aspetto e temi, o Data, ora, lingua e opzioni regionali.
Aggiunta del supporto per lo stile visivo a un’estensione, plug-in, snap-in MMC o a una DLL inserita in un processo
È possibile aggiungere il supporto per gli stili visivi a un’estensione, plug-in, snap-in MMC o a una DLL inserita in un processo. Ad esempio, utilizzare i passaggi seguenti per aggiungere il supporto di stili visivi per uno snap-in Microsoft Management Console (MMC).
-
Compila il tuo snap – in con il flag-DISOLATION_AWARE_ENABLED o inserisci la seguente istruzione prima di # include ” windows.dichiarazione h”.
#define ISOLATION_AWARE_ENABLED 1
Per ulteriori informazioni su ISOLATION_AWARE_ENABLED, vedere Isolamento dei componenti.
-
Includere il file di intestazione di controllo comune nella sorgente snap-in.
#include <commctrl.h>
-
Aggiungi un file chiamato YourApp.manifest all’albero dei sorgenti che utilizza il formato 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>
-
Aggiungi il manifesto al file di risorse del tuo snap-in. Vedere Utilizzo di ComCtl32 versione 6 in un’applicazione che utilizza estensioni, plug-in o una DLL inserita in un processo per i dettagli sull’aggiunta di un manifest a un file di risorse.
Spegnimento Visual Styles
È possibile disattivare gli stili di visualizzazione per un controllo o per tutti i comandi in una finestra chiamando il SetWindowTheme funzione come segue:
SetWindowTheme(hwnd, L" ", L" ");
Nell’esempio precedente, hwnd è l’handle della finestra in cui è possibile disattivare gli stili visivi. Dopo la chiamata, il controllo esegue il rendering senza stili visivi.
Utilizzo di stili visivi con contenuto HTML
Le pagine HTML che modificano le proprietà CSS (Cascading Style Sheets) come sfondo o bordo non hanno stili visivi applicati. Visualizzano l’attributo CSS specificato. Quando specificato come parte del contenuto, la maggior parte delle proprietà CSS si applica agli elementi a cui sono applicati stili visivi.
Per impostazione predefinita, gli stili visivi vengono applicati ai controlli HTML intrinseci nelle pagine visualizzate in Microsoft Internet Explorer 6 e versioni successive. Per disattivare gli stili visivi per una pagina HTML, aggiungere un META tag alla sezione
. Questa tecnica si applica anche ai contenuti confezionati come applicazioni HTML (HTA). Per disattivare gli stili visivi, il META tag deve essere il seguente:
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="no">
Nota
Se l’impostazione del browser e l’impostazione del tag non sono d’accordo, la pagina non applicherà stili visivi. Ad esempio, se il META tag è impostato su “no” e il browser è impostato per abilitare gli stili visivi, gli stili visivi non verranno applicati alla pagina. Tuttavia, se il browser o il META tag sono impostati su ” sì ” e l’altro elemento non è specificato, verranno applicati gli stili visivi.
Gli stili visivi potrebbero modificare il layout del contenuto. Inoltre, se si impostano determinati attributi sui controlli HTML intrinseci, come la larghezza di un pulsante, è possibile che l’etichetta sul pulsante sia illeggibile in determinati stili visivi.
È necessario testare accuratamente i contenuti utilizzando gli stili visivi per determinare se l’applicazione di stili visivi ha un effetto negativo sul contenuto e sul layout.
Quando gli stili visivi non vengono applicati
Per evitare di applicare stili visivi a una finestra di livello superiore, assegnare alla finestra una regione non nulla (SetWindowRgn). Il sistema presuppone che una finestra con un’area non NULL sia una finestra specializzata che non utilizza stili visivi. Una finestra secondaria associata a una finestra di primo livello non-visual-styles può comunque applicare stili visivi anche se la finestra principale non lo fa.
Se si desidera disabilitare l’uso di stili visivi per tutte le finestre dell’applicazione, chiamare SetThemeAppProperties e non passare il flag STAP_ALLOW_NONCLIENT. Se un’applicazione non chiama SetThemeAppProperties, i valori di flag assunti sono STAP_ALLOW_NONCLIENT | STAP_ALLOW_CONTROLS / STAP_ALLOW_WEBCONTENT. I valori assunti causano l’applicazione di uno stile visivo all’area non client, ai controlli e al contenuto Web.
Rendere l’applicazione compatibile con le versioni precedenti di Windows
Gran parte dell’architettura stile visivo è progettato per rendere semplice continuare a spedire il prodotto su versioni precedenti di Windows che non supportano la modifica dell’aspetto dei controlli. Quando si spedisce un’applicazione per più di un sistema operativo, tenere presente quanto segue:
- Nelle versioni di Windows precedenti a Windows 8, gli stili visivi sono disattivati quando il contrasto elevato è attivo. Per supportare il contrasto elevato, un’applicazione legacy che supporta gli stili visivi deve fornire un percorso di codice separato per disegnare correttamente gli elementi dell’interfaccia utente in contrasto elevato. In Windows 8, high contrast è una parte di stili visivi; tuttavia, un’applicazione Windows 8 (uno che include il GUID di Windows 8 nella sezione compatibilità della sua applicazione manifest) deve ancora fornire un percorso di codice separato per eseguire il rendering correttamente in alto contrasto su Windows 7 un precedente.
- Se si utilizzano le funzionalità in ComCtl32.dll versione 6, come la vista tile o il controllo link, è necessario gestire il caso in cui tali controlli non sono disponibili sul computer dell’utente. ComCtl32.dll versione 6 non è ridistribuibile.
- Prova la tua applicazione per assicurarti di non fare affidamento sulle funzionalità di ComCtl32.dll versione 6 senza prima verificare la versione corrente.
- Non collegare a UxTheme.lib.
- Scrivere codice di gestione degli errori per le istanze in cui gli stili visivi non funzionano come previsto.
- L’installazione del manifest dell’applicazione nelle versioni precedenti non influirà sul rendering dei controlli.
Stili visivi