Włączanie stylów wizualnych

  • artykuł
  • 06/30/2021
  • 9 protokół do czytania
    • j
    • c
    • D
    • m
    • m
czy ta strona jest pomocna?

Dziękuję.

w tym temacie wyjaśniono, jak skonfigurować aplikację, aby zapewnić, że typowe elementy sterujące są wyświetlane w preferowanym przez użytkownika stylu wizualnym.

ten temat obejmuje następujące sekcje.

  • używanie manifestów lub dyrektyw w celu zapewnienia, że style wizualne mogą być stosowane do aplikacji
  • przy użyciu ComCtl32.dll w wersji 6 W aplikacji, która używa tylko standardowych rozszerzeń
  • używając ComCtl32 w wersji 6 W Panelu sterowania lub biblioteki DLL uruchomionej przez RunDll32.exe
  • dodawanie obsługi stylów wizualnych do rozszerzenia, wtyczki, przystawki MMC lub biblioteki DLL, która jest wprowadzana do procesu
  • wyłączanie stylów wizualnych
  • Używanie stylów wizualnych z zawartością HTML
  • gdy style wizualne nie są stosowane
  • tematy

używanie manifestów lub dyrektyw w celu zapewnienia, że style wizualne mogą być stosowane do aplikacji

aby umożliwić stosowanie stylów wizualnych aplikacji, należy użyć comctl32.dll w wersji 6 lub nowszej. Ponieważ wersja 6 nie jest redystrybuowana, jest dostępna tylko wtedy, gdy aplikacja działa na wersji systemu Windows, która ją zawiera. System Windows jest dostarczany zarówno w wersji 5, jak i 6. ComCtl32dll w wersji 6 zawiera zarówno kontrolki użytkownika, jak i typowe kontrolki. Domyślnie aplikacje używają formantów użytkownika zdefiniowanych w User32.dll i wspólne kontrolki zdefiniowane w ComCtl32.dll Wersja 5. Lista wersji DLL i ich platform dystrybucyjnych znajduje się w części wspólne wersje sterujące.

jeśli chcesz, aby Twoja aplikacja używała stylów wizualnych, musisz dodać dyrektywę manifestu aplikacji lub kompilatora, która wskazuje, że ComCtl32.dll w wersji 6 powinien być używany, jeśli jest dostępny.

manifest aplikacji umożliwia aplikacji określenie wersji zestawu, których potrzebuje. W programie Microsoft Win32 zespół jest zestawem bibliotek DLL i listą obiektów, które można wersjonować, które są zawarte w tych bibliotekach DLL.

manifesty są napisane w XML. Nazwa pliku manifestu aplikacji jest nazwą pliku wykonywalnego, a następnie rozszerzeniem nazwy pliku .manifest; na przykład MyApp.exe.manifest. Poniższy przykładowy manifest pokazuje, że pierwsza sekcja opisuje sam manifest. Poniższa tabela przedstawia atrybuty ustawione przez element assemblyIdentity w sekcji Opis manifestu.

atrybut opis
wersja wersja manifestu. Wersja musi być w formie major.drobne.rewizja.build (Czyli n.n.n, gdzie n <=65535).
processorArchitecture procesor, dla którego została opracowana Twoja aplikacja.
nazwa zawiera nazwę firmy, nazwę produktu i nazwę aplikacji.
wpisz Typ aplikacji, na przykład Win32.

przykładowy manifest zawiera również opis aplikacji i określa zależności aplikacji. Poniższa tabela pokazuje atrybuty ustawione przez element assemblyIdentity w sekcji zależności.

atrybut opis
Typ typ komponentu zależności, takiego jak Win32.
nazwa Nazwa komponentu.
wersja Wersja komponentu.
procesoraarchitecture procesora, dla którego komponent jest przeznaczony.
publicKeyToken key token używany z tym komponentem.
język język komponentu.

Poniżej znajduje się przykład pliku manifestu.

ważne

Ustaw wpis processorArchitecture na „X86”, jeśli Twoja aplikacja jest przeznaczona na 32-bitową platformę Windows, lub na „amd64”, jeśli Twoja aplikacja jest przeznaczona na 64-bitową platformę Windows. Możesz również określić „*”, co zapewnia, że wszystkie platformy są ukierunkowane, jak pokazano w poniższych przykładach.

<?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>

jeśli używasz programu Microsoft Visual C++ 2005 lub nowszego, możesz dodać następującą dyrektywę kompilatora do kodu źródłowego zamiast ręcznie tworzyć manifest. Dla czytelności dyrektywa jest podzielona na kilka linii.

#pragma comment(linker,"\"/manifestdependency:type='win32' \name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

poniższe tematy opisują kroki stosowania stylów wizualnych do różnych typów aplikacji. Zauważ, że format manifestu jest taki sam w każdym przypadku.

Używając ComCtl32.dll w wersji 6 W aplikacji używającej tylko standardowych rozszerzeń

poniżej przedstawiono przykłady aplikacji, które nie używają rozszerzeń innych firm.

  • Kalkulator
  • FreeCell (w Windows Vista i Windows 7)
  • Minesweeper (w Windows Vista i Windows 7)
  • Notatnik
  • Pasjans (w Windows Vista i Windows 7)

aby utworzyć manifest i umożliwić aplikacji Używanie stylów wizualnych.

  1. Link do ComCtl32.lib i wywołanie InitCommonControls.

  2. Dodaj plik o nazwie YourApp.exe.manifest do drzewa źródłowego, które ma format manifestu 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>
  3. Dodaj manifest do pliku zasobów aplikacji w następujący sposób:

    CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"

    Uwaga

    po dodaniu poprzedniego wpisu do zasobu należy sformatować go w jednej linii. Alternatywnie można umieścić plik manifestu XML w tym samym katalogu, co plik wykonywalny aplikacji. System operacyjny najpierw załaduje manifest z systemu plików, a następnie sprawdzi sekcję zasobów pliku wykonywalnego. Wersja systemu plików ma pierwszeństwo.

podczas tworzenia aplikacji manifest zostanie dodany jako zasób binarny.

używanie ComCtl32 w wersji 6 W Panelu sterowania lub biblioteki DLL uruchomionej przez RunDll32.exe

aby utworzyć manifest i umożliwić aplikacji Używanie stylów wizualnych.

  1. Link do ComCtl32.lib i wywołanie InitCommonControls.

  2. Dodaj plik o nazwie YourApp.cpl. manifest do drzewa źródłowego, które ma format manifestu 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>
  3. Dodaj manifest do pliku zasobów aplikacji jako identyfikator zasobu 123.

Uwaga

gdy tworzysz aplikację Panelu sterowania, umieść ją w odpowiedniej kategorii. Panel sterowania obsługuje teraz kategoryzację aplikacji Panelu sterowania. Oznacza to, że aplikacjom Panelu sterowania można przypisywać identyfikatory i rozdzielać je na obszary zadań, takie jak dodawanie lub usuwanie programów, wygląd i motywy, Data, Godzina, język i Opcje regionalne.

dodanie obsługi stylów wizualnych do rozszerzenia, wtyczki, przystawki MMC lub biblioteki DLL wprowadzonej do procesu

wsparcie dla stylów wizualnych można dodać do rozszerzenia, wtyczki, przystawki MMC lub biblioteki DLL wprowadzonej do procesu. Na przykład, aby dodać obsługę stylów wizualnych dla przystawki Microsoft Management Console (MMC), wykonaj następujące czynności.

  1. Skompiluj przystawkę z flagą-DISOLATION_AWARE_ENABLED lub Wstaw następującą instrukcję przed oknami # include”.H ” oświadczenie.

    #define ISOLATION_AWARE_ENABLED 1

    aby uzyskać więcej informacji o Isolation_aware_enabled, zobacz izolowanie komponentów.

  2. Dołącz plik nagłówka Common control w źródle snap-in.

    #include <commctrl.h>
  3. Dodaj plik o nazwie YourApp.manifest do drzewa źródłowego używającego formatu manifestu 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>
  4. Dodaj manifest do pliku zasobów przystawki. Zobacz Używanie comctl32 w wersji 6 W aplikacji używającej rozszerzeń, wtyczek lub biblioteki DLL wprowadzonej do procesu, aby uzyskać szczegółowe informacje na temat dodawania manifestu do pliku zasobu.

wyłączanie stylów wizualnych

możesz wyłączyć style wizualne dla kontrolki lub dla wszystkich kontrolek w oknie, wywołując funkcję SetWindowTheme w następujący sposób:

SetWindowTheme(hwnd, L" ", L" ");

w poprzednim przykładzie HWND jest uchwytem okna, w którym można wyłączyć style wizualne. Po wywołaniu sterowanie renderuje bez stylów wizualnych.

Używanie stylów wizualnych z zawartością HTML

strony HTML modyfikujące właściwości kaskadowych arkuszy stylów (CSS), takie jak tło lub obramowanie, nie mają do nich zastosowanych stylów wizualnych. Wyświetlają one określony atrybut CSS. Gdy jest to część zawartości, większość właściwości CSS ma zastosowanie do elementów z zastosowanymi stylami wizualnymi.

domyślnie style wizualne są stosowane do wewnętrznych formantów HTML na stronach wyświetlanych w programie Microsoft Internet Explorer 6 i nowszych wersjach. Aby wyłączyć style wizualne strony HTML, dodaj meta tag do sekcji

. Technika ta dotyczy również treści pakowanych jako aplikacje HTML (HTAs). Aby wyłączyć style wizualne, metatag musi być następujący:

<META HTTP-EQUIV="MSThemeCompatible" CONTENT="no">

Uwaga

Jeśli ustawienia przeglądarki i ustawienia znaczników nie zgadzają się, strona nie zastosuje stylów wizualnych. Na przykład, jeśli znacznik META jest ustawiony na „nie”, a przeglądarka jest ustawiona na włączanie stylów wizualnych, style wizualne nie zostaną zastosowane do strony. Jeśli jednak przeglądarka lub znacznik META są ustawione na „tak”, a drugi element nie jest określony, zastosowane zostaną style wizualne.

style wizualne mogą zmienić układ treści. Ponadto, jeśli ustawisz pewne atrybuty w wewnętrznych kontrolkach HTML, takie jak szerokość przycisku, może się okazać, że etykieta na przycisku jest nieczytelna w niektórych stylach wizualnych.

musisz dokładnie przetestować zawartość za pomocą stylów wizualnych, aby określić, czy stosowanie stylów wizualnych ma niekorzystny wpływ na zawartość i układ.

gdy style wizualne nie są stosowane

aby uniknąć stosowania stylów wizualnych do okna najwyższego poziomu, nadaj oknu obszar inny niż null (SetWindowRgn). System zakłada, że okno z obszarem innym niż NULL jest wyspecjalizowanym oknem, które nie używa stylów wizualnych. Okno podrzędne powiązane z oknem najwyższego poziomu stylów niewizualnych może nadal stosować style wizualne, nawet jeśli okno nadrzędne tego nie robi.

jeśli chcesz wyłączyć używanie stylów wizualnych dla wszystkich okien w aplikacji, wywołaj SetThemeAppProperties i nie przekazuj flagi STAP_ALLOW_NONCLIENT. Jeśli aplikacja nie wywołuje SetThemeAppProperties, zakładanymi wartościami znaczników są STAP_ALLOW_NONCLIENT | STAP_ALLOW_CONTROLS / STAP_ALLOW_WEBCONTENT. Przyjęte wartości powodują, że niekliencki obszar, kontrolki i zawartość sieci Web mają styl wizualny.

zapewnienie zgodności aplikacji z wcześniejszymi wersjami systemu Windows

znaczna część architektury stylu wizualnego ma na celu ułatwienie dalszego wysyłania produktu we wcześniejszych wersjach systemu Windows, które nie obsługują zmiany wyglądu elementów sterujących. Wysyłając aplikację dla więcej niż jednego systemu operacyjnego, należy pamiętać o następujących kwestiach:

  • w wersjach systemu Windows wcześniejszych niż Windows 8 style wizualne są wyłączone, gdy włączony jest wysoki kontrast. Aby obsługiwać wysoki kontrast, starsza aplikacja obsługująca style wizualne musi zapewnić oddzielną ścieżkę kodu, aby prawidłowo rysować elementy interfejsu użytkownika w wysokim kontraście. W systemie Windows 8 wysoki kontrast jest częścią stylów wizualnych; jednak aplikacja Windows 8 (która zawiera identyfikator GUID systemu Windows 8 w sekcji zgodności manifestu aplikacji) nadal musi zapewnić oddzielną ścieżkę kodu, aby poprawnie renderować wysoki kontrast w systemie Windows 7 wcześniej.
  • Jeśli korzystasz z funkcji w ComCtl32.dll w wersji 6, na przykład widok kafelkowy lub kontrola łącza, musisz poradzić sobie w przypadku, gdy te kontrolki nie są dostępne na komputerze użytkownika. ComCtl32dll w wersji 6 nie jest redystrybuowalny.
  • Przetestuj swoją aplikację, aby upewnić się, że nie polegasz na funkcjach ComCtl32.dll w wersji 6 bez wcześniejszego sprawdzania bieżącej wersji.
  • nie Linkuj do UxTheme.lib.
  • napisz kod obsługi błędów dla wystąpień, gdy style wizualne nie działają zgodnie z oczekiwaniami.
  • instalacja manifestu aplikacji we wcześniejszych wersjach nie wpłynie na renderowanie kontrolek.

Style Wizualne

Write a Comment

Twój adres e-mail nie zostanie opublikowany.