Ale*_*fie 5 .net c# vb.net winapi titlebar
这是我之前在Windows Vista/7 Aero Titlebar上绘制自定义按钮问题的后续内容.
我最近重新讨论了这个主题,并发现这篇文章基本上是在启用Aero的标题栏(Windows Vista和7)上"绘制"按钮的黑客.代码的作用是在当前窗口上创建一个透明窗口并将按钮放在其上,给标题栏上的其他按钮留下印象.唯一的问题是按钮看起来像常规的WinForms按钮!
我的问题是,我如何阅读windows shell样式(又名主题)才能创建与Control Box中的样式相同的按钮(见图)?
我想答案是在.NET(VB.NET或C#).我可以使用非托管代码.

因此,如果我理解正确的话,您想了解 Windows 7 所谓的当前主题的“窗口颜色”方面。
根据 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);
Run Code Online (Sandbox Code Playgroud)
“你可以通过调用DwmGetColorizationColor函数来检查合成颜色和不透明度。如果这个函数成功,它会设置一个GDI+ ARGB颜色值和一个指示颜色是否不透明的布尔值。就像在控制面板中更改Aero方案一样,当合成颜色发生变化时,会广播一条消息。发生这种情况时会发送 WM_DWMCOLORIZATIONCOLORCHANGED,但在这种情况下,参数会告诉您新的颜色和不透明度是什么。”
| 归档时间: |
|
| 查看次数: |
1342 次 |
| 最近记录: |