2011-12-02 26 views
5

這是我早期問題Draw Custom Buttons on Windows Vista/7 Aero Titlebar的後續操作。如何在.NET中創建殼式標題欄按鈕

最近我重新討論了這個話題,發現this article這實際上是對啓用了Aero的標題欄(Windows Vista & 7)上的「繪圖」按鈕的破解。代碼的作用是在當前窗口上創建一個透明窗口並將按鈕放置在窗口上,從而在標題欄上留下更多按鈕的印象。唯一的問題是按鈕看起來像普通的WinForms按鈕!

我的問題是,我如何閱讀windows shell風格(又名主題),以創建按鈕樣式,就像控制箱中的那些風格(見圖)

我想在.NET(VB.NET或C#)的答案。我可以使用非託管代碼。

Control Buttons

回答

1

所以,如果我理解正確的話,你想讀什麼樣的Windows 7調用當前主題的「窗口顏色」方面。

Acording到MSDN http://msdn.microsoft.com/en-us/magazine/cc163435.aspx,你想DwmGetColorizationColor:「檢索正在使用的DWM玻璃組成的當前顏色這個值是基於當前的配色方案更改的設置導致一個WM_WMCOLORIZATIONCOLORCHANGED通知。」

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

「你可以檢查通過調用DwmGetColorizationColor函數查看組成顏色和透明度。如果這個函數成功,它會設置一個GDI + ARGB顏色值,並表示該顏色是否是不透明的一個布爾值。就像改變控制面板中的Aero方案中,當構圖顏色發生變化時會有廣播消息,發生這種情況時會發送WM_DWMCOLORIZATIONCOLORCHANGED,但在這種情況下,參數會告訴您新顏色和不透明度。

+0

感謝您的回覆。儘管這不是我真正想要的,但它做出了很好的閱讀。我想要做的是創建一個類似於控制盒的按鈕(max,min&close)。 –

+0

有可能沒有API:這就是爲什麼我想你可能不得不閱讀窗口顏色,然後使用窗口顏色作爲提示繪製按鈕。你能想到任何其他應用程序可以做你想做的事嗎? – Josh

+0

是的。查看我在第一個問題中添加的屏幕截圖(http://stackoverflow.com/questions/4117874/draw-custom-buttons-on-windows-vista-7-aero-titlebar)。 DisplayFusion,一個多桌面管理器能夠做到這一點,所有的發光效果。 –

相關問題