.NET

2011-12-02 27 views
5

İçerisinde kabuk stilalı başlık çubuğu düğmeleri nasıl oluşturulur? Bu, önceki soruma ait bir Draw Custom Buttons on Windows Vista/7 Aero Titlebar izlemesidir..NET

Konuyu kısa bir süre önce tekrar ziyaret ettim ve this article'u buldum. Bu, esas olarak Aero etkin başlık çubuğunda 'çizim' düğmelerinin kesilmesidir (Windows Vista & 7). Kodun yaptığı, geçerli olanın üzerine şeffaf bir pencere oluşturmak ve düğmelerin üzerine yerleştirerek, başlık çubuğunda ek düğmeler izlenimi verir. Tek sorun düğmeleri normal WinForms düğmeleri gibi görünüyor!

Sorunuz, Denetim Kutusu (bkz. Resim) (bkz. Resim) örneğinde olduğu gibi biçimlendirilmiş düğmeler oluşturmak için pencere kabuğu stilini (tema) nasıl okurum?

Verilerin .NET (VB.NET veya C#) olmasını istiyorum. Yönetilmeyen kod ile tamam. Seni doğru anladıysam eğer

Control Buttons

cevap

1

Yani, Windows 7 geçerli temanın "Pencere Rengi" yönünü dediği okumak istiyorum. MSDN http://msdn.microsoft.com/en-us/magazine/cc163435.aspx acording

, sen DwmGetColorizationColor istiyorum: "DWM cam kompozisyonu için kullanılıyor Geçerli rengi alır Bu değer geçerli bir renk düzeni dayanmaktadır ayarının değiştirilmesi bir WM_WMCOLORIZATIONCOLORCHANGED bildirim neden olur.".

[DllImport("dwmapi.dll", PreserveSig = false)] 
public static extern void DwmGetColorizationColor(out int pcrColorization, [MarshalAs(UnmanagedType.Bool)]out bool pfOpaqueBlend); 

"Sen DwmGetColorizationColor işlevini çağırarak kompozisyon rengini ve opaklığını kontrol edebilirsiniz. Bu işlev başarılı olursa, bir GDI + ARGB renk değeri ve renk opak olup olmadığını gösteren bir Boole ayarlayacaktır. Sadece değiştirme gibi kontrol panelindeki Aero şeması, kompozisyon rengi değiştiğinde bir mesaj yayınlanır. Bu olduğunda WM_DWMCOLORIZATIONCOLORCHANGED gönderilir, ancak bu durumda parametreler size yeni renk ve opaklığın ne olduğunu gösterir. "

+0

Yanıtınız için teşekkür ederiz. Gerçekten istediğim gibi olmasa da iyi bir okuma yaptı. Benim yapmak istediğim, kontrol kutusuna (max, min ve close) gidenlere benzer bir düğme oluşturmak. –

+0

Bunun için bir API olmayabilir: Bu yüzden Window Color'ı okumanız ve daha sonra Window Color'ı kullanarak ipucu olarak çizmeniz gerektiğini düşündüm. Yapmaya çalıştığınız şeyi yapan başka uygulamaları düşünebilir misiniz? – Josh

+0

Evet. İlk soruya eklediğim ekran görüntülerine bakın (http://stackoverflow.com/questions/4117874/draw-custom-buttons-on-windows-vista-7-aero-titlebar). DisplayFusion, birden fazla masaüstü yöneticisi bunu, tüm parlama efektleriyle yapabilir. –