这是我之前的问题Draw Custom Buttons on Windows Vista/7 Aero Titlebar的后续行动。
我最近重新审视了这个主题并发现了this article,这实际上是在启用Aero的标题栏(Windows Vista& 7)上“绘制”按钮的黑客行为。代码的作用是在当前窗口上创建一个透明窗口并将按钮放在其上,给标题栏上的其他按钮留下印象。唯一的问题是按钮看起来像常规的WinForms按钮!
我的问题是,我如何阅读windows shell样式(又名主题)才能创建样式按钮,就像控制框中那样(见图像)?
我希望得到.NET(VB.NET或C#)的答案。我可以使用非托管代码。
答案 0 :(得分:1)
因此,如果我理解正确,您想要阅读Windows 7所谓的当前主题的“窗口颜色”方面。
根据MSDN http://msdn.microsoft.com/en-us/magazine/cc163435.aspx,您需要DwmGetColorizationColor:“检索用于DWM玻璃合成的当前颜色。此值基于当前颜色方案。更改设置会导致WM_WMCOLORIZATIONCOLORCHANGED通知。”< / p>
[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,但在这种情况下,参数会告诉您新颜色和不透明度是什么。“