gpt4 book ai didi

c# - 如何在 .NET 中创建 shell 样式的标题栏按钮

转载 作者:太空狗 更新时间:2023-10-29 23:47:42 25 4
gpt4 key购买 nike

这是我之前问题的后续问题 Draw Custom Buttons on Windows Vista/7 Aero Titlebar .

我最近重新审视了这个话题,发现 this article这本质上是对支持 Aero 的标题栏(Windows Vista 和 7)上“绘制”按钮的黑客攻击。代码所做的是在当前窗口上创建一个透明窗口并将按钮放在上面,给人一种标题栏上有其他按钮的印象。唯一的问题是按钮看起来像普通的 WinForms 按钮!

我的问题是,如何阅读 Windows 外壳样式(又名主题)以创建样式与控制框中的按钮样式相同的按钮(参见图片)

我希望在 .NET(VB.NET 或 C#)中得到答案。我接受非托管代码。

Control Buttons

最佳答案

因此,如果我对您的理解正确,您想阅读 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);

"您可以通过调用 DwmGetColorizationColor 函数来查看合成颜色和不透明度。如果此函数成功,它将设置一个 GDI+ ARGB 颜色值和一个指示颜色是否不透明的 bool 值。就像在中更改 Aero 方案一样控制面板,当合成颜色发生变化时会广播一条消息。发生这种情况时会发送 WM_DWMCOLORIZATIONCOLORCHANGED,但在这种情况下,参数会告诉您新的颜色和不透明度是什么。”

关于c# - 如何在 .NET 中创建 shell 样式的标题栏按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8354278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com