Görsel Stilleri Etkinleştirme
Bu konuda, yaygın denetimlerin kullanıcının tercih edilen görsel stilinde görüntülendiğinden emin olmak için uygulamanızın nasıl yapılandırıldığını açıklar.
Bu konu aşağıdaki bölümleri içerir.
- Görsel Stillerin Uygulamalara Uygulanamasını Sağlamak için Bildirimleri veya Yönergeleri
- Yalnızca Standart Uzantılar Kullanan Bir Uygulamada ComCtl32.dll Sürüm 6 Kullanma
- ComCtl32 Sürüm 6'nın Denetim Masası'nda veya RunDll32.exe tarafından çalıştırılan bir DLL'de Kullanılması
- Bir Uzantıya, Eklentiye, MMC Ek Bileşenine veya İşlem Getirilen DLL'ye Görsel Stil Desteği Ekleme
- Görsel Stilleri Kapatma
- HTML İçerikli Görsel Stilleri Kullanma
- Görsel Stiller uygulanmadığında
- Uygulamanızı Windows'in Önceki Sürümleriyle Uyumlu Hale Getirme
- İlgili konular
Görsel Stillerin Uygulamalara Uygulanamasını Sağlamak için Bildirimleri veya Yönergeleri Kullanma
Uygulamanızın görsel stilleri kullanmasını sağlamak için ComCtl32.dll sürüm 6 veya üzerini kullanmanız gerekir. Sürüm 6 yeniden dağıtılabilir olmadığından, yalnızca uygulamanız onu içeren bir Windows sürümünde çalışıyorsa kullanılabilir. Windows hem sürüm 5 hem de sürüm 6 ile birlikte bulunur. ComCtl32.dll sürüm 6 hem kullanıcı denetimlerini hem de ortak denetimleri içerir. Varsayılan olarak, uygulamalar User32.dll tanımlanan kullanıcı denetimlerini ve ComCtl32.dll sürüm 5'te tanımlanan ortak denetimleri kullanır. DLL sürümlerinin ve dağıtım platformlarının listesi için bkz. Ortak Denetim Sürümleri.
Uygulamanızın görsel stilleri kullanmasını istiyorsanız, varsa ComCtl32.dll sürüm 6'nın kullanılması gerektiğini belirten bir uygulama bildirimi veya derleyici yönergesi eklemeniz gerekir.
Uygulama bildirimi, bir uygulamanın bir derlemenin hangi sürümlerini gerektirdiğini belirtmesini sağlar. Microsoft Win32'de derleme, bir DLL kümesi ve bu DLL'lerin içinde yer alan sürümlenebilir nesnelerin listesidir.
Bildirimler XML ile yazılır. Uygulama bildirim dosyasının adı yürütülebilir dosyanızın adı ve ardından .manifest dosya adı uzantısıdır; örneğin, .manifest MyApp.exe. Aşağıdaki örnek bildirim, ilk bölümün bildirimin kendisini tanımladığını gösterir. Aşağıdaki tabloda bildirim açıklaması bölümündeki assemblyIdentity öğesi tarafından ayarlanan öznitelikler gösterilmektedir.
Öznitelik | Açıklama |
---|---|
Sürüm | Manifestin sürümü. Sürüm major.minor.revision.build biçiminde olmalıdır (yani, n.n.n.n, burada n <=65535). |
işlemci mimarisi | Uygulamanızın geliştirildiği işlemci. |
ad | Şirket adını, ürün adını ve uygulama adını içerir. |
tür | Uygulamanızın türü, örneğin Win32. |
Örnek bildirim ayrıca uygulamanızın açıklamasını sağlar ve uygulama bağımlılıklarını belirtir. Aşağıdaki tabloda bağımlılık bölümündeki assemblyIdentity öğesi tarafından ayarlanan öznitelikler gösterilmektedir.
Öznitelik | Açıklama |
---|---|
tür | Win32 gibi bağımlılık bileşeninin türü. |
ad | Bileşenin adı. |
Sürüm | Bileşenin sürümü. |
işlemci mimarisi | Bileşenin tasarlandığı işlemci. |
publicKeyToken | Bu bileşenle kullanılan anahtar belirteci. |
Dil | Bileşenin dili. |
Aşağıda bir bildirim dosyası örneği verilmiştir.
Önemli
uygulamanız 32 bit Windows platformunu hedeflediyse processorArchitecture girişini "X86" veya uygulamanız 64 bit Windows platformunu hedeflediyse "amd64" olarak ayarlayın. Ayrıca, aşağıdaki örneklerde gösterildiği gibi tüm platformların hedeflenmiş olmasını sağlayan "*"belirtebilirsiniz.
<?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>
Microsoft Visual C++ 2005 veya üzerini kullanıyorsanız, el ile bildirim oluşturmak yerine kaynak kodunuza aşağıdaki derleyici yönergesini ekleyebilirsiniz. Okunabilirlik için yönerge burada birkaç satıra ayrılmıştır.
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
Aşağıdaki konularda, farklı uygulama türlerine görsel stilleri uygulama adımları açıklanmaktadır. Bildirim biçiminin her durumda aynı olduğuna dikkat edin.
Yalnızca Standart Uzantılar Kullanan Bir Uygulamada ComCtl32.dll Sürüm 6 Kullanma
Aşağıda üçüncü taraf uzantılarını kullanmayan uygulamalara örnek verilmiştir.
- Hesap makinesi
- FreeCell (Windows Vista ve Windows 7'de)
- Minesweeper (Windows Vista ve Windows 7'de)
- Not defteri
- Solitaire (Windows Vista ve Windows 7'de)
Bildirim oluşturmak ve uygulamanızın görsel stilleri kullanmasını sağlamak için.
ComCtl32.lib'e bağlayın ve InitCommonControlsçağrısını yapın.
Kaynak ağacınıza XML bildirim biçimine sahip YourApp.exe.manifest adlı bir dosya ekleyin.
<?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>
Bildirimi uygulamanızın kaynak dosyasına aşağıdaki gibi ekleyin:
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"
Not veya Dikkat
Kaynağa önceki girdiyi eklediğinizde, bunu tek bir satırda biçimlendirmeniz gerekir. Alternatif olarak, XML bildirim dosyasını uygulamanızın yürütülebilir dosyasıyla aynı dizine yerleştirebilirsiniz. İşletim sistemi önce dosya sisteminden bildirimi yükler, ardından yürütülebilir dosyanın kaynak bölümünü kontrol eder. Dosya sistemi sürümü önceliklidir.
Uygulamanızı oluşturduğunuzda, bildirim ikili kaynak olarak eklenir.
Denetim Masası'nda ComCtl32 Sürüm 6'yi veya RunDll32.exe Tarafından Çalıştırılan DLL'yi Kullanma
Bildirim oluşturmak ve uygulamanızın görsel stilleri kullanmasını sağlamak için.
ComCtl32.lib'e bağlanın ve InitCommonControlsçağrısında bulunun.
Kaynak ağacınıza XML bildirim biçimine sahip YourApp.cpl.manifest adlı bir dosya ekleyin.
<?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>
Bildirimi uygulamanızın kaynak dosyasına kaynak kimliği 123 olarak ekleyin.
Not
Denetim Masası uygulaması yazarken, uygulamayı uygun kategoriye yerleştirin. Denetim Masası artık Denetim Masası uygulamalarının kategorilere ayrılmalarını destekliyor. Bu, Denetim Masası uygulamalarına tanımlayıcılar atanabileceği ve Program Ekle veya Kaldır, Görünüm ve Temalar veya Tarih, Saat, Dil ve Bölgesel Seçenekler gibi görev alanlarına ayrılabileceği anlamına gelir.
Uzantıya, Eklentiye, MMC Ek Bileşenine veya İşleme Getirilen DLL'ye Görsel Stil Desteği Ekleme
Görsel stiller için destek bir uzantıya, eklentiye, MMC ek bileşenine veya işleme getirilen bir DLL'ye eklenebilir. Örneğin, Microsoft Yönetim Konsolu (MMC) ek bileşeni için görsel stiller desteği eklemek için aşağıdaki adımları kullanın.
Eklentinizi -DISOLATION_AWARE_ENABLED bayrağıyla derleyin veya #include "windows.h" deyiminden önce aşağıdaki deyimi ekleyin.
#define ISOLATION_AWARE_ENABLED 1
ISOLATION_AWARE_ENABLED hakkında daha fazla bilgi için bkz. Bileşen Yalıtma.
Ortak denetim başlık dosyasını ek modül kaynağınıza ekleyin.
#include <commctrl.h>
Kaynak ağacınıza XML bildirim biçimini kullanan YourApp.manifest adlı bir dosya ekleyin.
<?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>
Manifest dosyasını ek bileşeninizin kaynak dosyasına ekleyin. Uzantılar, Eklentiler veya bir işlem içerisine getirilen bir DLL kullanan bir uygulamada ComCtl32 Sürüm 6 kullanımı hakkında, kaynak dosyasına bildirim ekleme ile ilgili ayrıntılar için bkz:.
Görsel Stilleri Kapatma
SetWindowTheme işlevini şu şekilde çağırarak bir denetim veya penceredeki tüm denetimler için görsel stilleri kapatabilirsiniz:
SetWindowTheme(hwnd, L" ", L" ");
Önceki örnekte, hwnd, görsel stillerin devre dışı bırakıldığı pencerenin tutamacıdır. Çağrıdan sonra denetim görsel stiller olmadan işlenir.
HTML İçeriğiyle Görsel Stilleri Kullanma
Arka plan veya kenarlık gibi Basamaklı Stil Sayfaları (CSS) özelliklerini değiştiren HTML sayfalarında görsel stiller uygulanmaz. Belirtilen CSS özniteliğini görüntüler. İçeriğin bir parçası olarak belirtildiğinde, CSS özelliklerinin çoğu görsel stilleri uygulanmış öğelere uygulanır.
Varsayılan olarak, görsel stiller Microsoft Internet Explorer 6 ve sonraki sürümlerde görüntülenen sayfalardaki iç HTML denetimlerine uygulanır. HTML sayfasının görsel stillerini kapatmak için <head>
bölümüne bir META etiketi ekleyin. Bu teknik, HTML Uygulamaları (HTA) olarak paketlenmiş içerik için de geçerlidir. Görsel stilleri kapatmak için META etiketi aşağıdaki gibi olmalıdır:
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="no">
Not
Tarayıcı ayarı ve etiket ayarı uyuşmuyorsa, sayfa görsel stilleri uygulamaz. Örneğin, META etiketi "hayır" olarak ayarlanırsa ve tarayıcı görsel stilleri etkinleştirecek şekilde ayarlanırsa, görsel stiller sayfaya uygulanmaz. Ancak, tarayıcı veya META etiketi "evet" olarak ayarlanırsa ve diğer öğe belirtilmezse görsel stiller uygulanır.
Görsel stiller, içeriğinizin düzenini değiştirebilir. Ayrıca, bir düğmenin genişliği gibi iç HTML denetimlerinde belirli öznitelikler ayarlarsanız, düğmedeki etiketin belirli görsel stilleri altında okunamaz olduğunu fark edebilirsiniz.
Görsel stilleri uygulamanın içeriğinizi ve düzeninizi olumsuz etkileyip etkilemediğini belirlemek için görsel stilleri kullanarak içeriğinizi kapsamlı bir şekilde test etmeniz gerekir.
Görsel Stiller Uygulanmadığında
Görsel stillerin en üst düzey bir pencereye uygulanmasını önlemek için pencereye null olmayan bir bölge verin (SetWindowRgn). Sistem, NULL olmayan bölge içeren bir pencerenin görsel stilleri kullanmayan özel bir pencere olduğunu varsayar. Görsel stillere sahip olmayan bir üst düzey pencereyle ilişkilendirilmiş bir alt pencere, üst pencere görsel stilleri uygulamasa bile yine de görsel stilleri uygulayabilir.
Uygulamanızdaki tüm pencereler için görsel stillerin kullanımını devre dışı bırakmak istiyorsanız SetThemeAppPropertiesçağırın ve STAP_ALLOW_NONCLIENT bayrağını geçirmeyin. Bir uygulama SetThemeAppPropertiesçağırmazsa, varsayılan bayrak değerleri STAP_ALLOW_NONCLIENT | STAP_ALLOW_CONTROLS | STAP_ALLOW_WEBCONTENT olur. Varsayılan değerler, istemci olmayan alanın, denetimlerin ve web içeriğinin görsel bir stilin uygulanmasına neden olur.
Uygulamanızı Windows'un Önceki Sürümleriyle Uyumlu Hale Getirme
Ürününüzün denetimlerin görünümünü değiştirmeyi desteklemeyen Windows'un önceki sürümlerinde çalışmaya devam etmesini sağlamak üzere, görsel stil mimarisi büyük oranda tasarlanmıştır. Bir uygulamayı birden fazla işletim sistemi için gönderirken aşağıdakilere dikkat edin:
- Windows'un Windows 8 öncesi sürümlerinde, yüksek karşıtlık açıkken görsel stiller kapalıdır. Yüksek karşıtlığı desteklemek için görsel stilleri destekleyen eski bir uygulamanın, yüksek karşıtlıkta kullanıcı arabirimi öğelerini düzgün bir şekilde çizmek için ayrı bir kod yolu sağlaması gerekir. Windows 8'de yüksek karşıtlık görsel stillerin bir parçasıdır; ancak, bir Windows 8 uygulamasının (uygulama bildiriminin uyumluluk bölümünde Windows 8 GUID'sini içeren uygulama) daha önce Windows 7'de yüksek karşıtlıkta doğru şekilde işlenmek için ayrı bir kod yolu sağlaması gerekir.
- kutucuk görünümü veya bağlantı denetimi gibi ComCtl32.dll sürüm 6'daki özellikleri kullanıyorsanız, bu denetimlerin kullanıcınızın bilgisayarında kullanılamadığı durumu işlemeniz gerekir. ComCtl32.dll sürüm 6 yeniden dağıtılamaz.
- Önce geçerli sürümü denetlemeden ComCtl32.dll sürüm 6'nın özelliklerine güvenmediğinizden emin olmak için uygulamanızı test edin.
- UxTheme.lib'e bağlanma.
- Görsel stilleri beklendiği gibi çalışmadığında örnekler için hata işleme kodu yazın.
- Uygulamanızın bildirimini önceki sürümlerde yüklemek denetimlerin işlenmesini etkilemez.
İlgili konular