我几乎可以肯定我知道这个问题的答案,但我希望有一些我忽略的事情。

即使在 Windows XP 上运行,某些应用程序的标题栏和按钮似乎也具有 Vista Aero 的外观和感觉。(Google Chrome 和 Windows Live 照片库作为示例。)我知道从 WinForms 实现此目的的一种方法是创建一个无边框表单并自己绘制标题栏/按钮,然后覆盖 WndProc 确保移动、调整大小和单击按钮执行它们应该执行的操作(我不清楚具体细节,但可能会在一天阅读文档的情况下完成它。)我很好奇是否有不同的,我忽略的更简单的方法。也许我忽略了一些 API 调用或窗口样式?

我相信谷歌已经通过使用 Chrome 的滚动窗口方法为我解答了这个问题。如果有人有新信息,我会将问题留到另一天,但我相信我自己已经回答了这个问题。

有帮助吗?

解决方案

这是一篇包含完整代码示例的文章,介绍如何为应用程序使用您自己的自定义“chrome”:

http://geekswithblogs.net/kobush/articles/CustomBorderForms3.aspx

这看起来确实是一些好东西。该系列共有 3 篇文章,运行得很好,而且在 Vista 上也运行得很好!

其他提示

谷歌浏览器是 不是 在 XP 上使用 Vista SDK 来实现这一点。如果你窥视 src\chrome\browser\views\frame 根据系统的功能,有几个文件可以定义浏览器框架。在 XP 上,看起来像 OpaqueFrame 用来;第 19 行有这样的内容:

// OpaqueFrame
//
//  OpaqueFrame is a CustomFrameWindow subclass that in conjunction with
//  OpaqueNonClientView provides the window frame on Windows XP and on Windows
//  Vista when DWM desktop compositing is disabled. The window title and
//  borders are provided with bitmaps.

看起来它正在使用中的资源 src\chrome\app\theme 绘制框架按钮。

所以看来我希望有某种廉价的方法来在 XP 上启用 Vista 主题的希望破灭了。唯一的方法是手动绘制窗口的非客户区。我相信 像这样的东西 可能是正确的选择,因为它可以让 Windows 处理非客户端事务,例如移动窗口和调整窗口大小。

除非有人能找到一种方法来神奇地在 XP 上启用 Vista 主题,否则这就是问题的答案,但我显然不能将自己的帖子标记为答案。

Owen,我在 XP 上使用 Chrome,但在 Chrome 窗口上没有看到“Vista Aero”玻璃主题。我看到它是纯蓝色的。

如果您想要自定义控件和窗口标题栏主题,则可以实现。有一个优秀的、免费的 WinForms UI 工具包可以做到这一点: Krypton工具包

@乔纳森·霍兰德:这是可以通过 .NET 完成的事情吗?

是的,使用 DllImport。 这里 是一篇很好的博文

Google Chrome 使用 Windows Vista SDK 在 XP 上获得玻璃外观。你可以在这里下载:

http://www.microsoft.com/downloads/details.aspx?FamilyID=4377f86d-c913-4b5c-b87e-ef72e5b4e065&displaylang=en

使用此功能,您需要启用以下 DLL 的延迟加载才能在 XP 中获得玻璃效果:

  • ux主题.dll
  • dwmapi.dl

不,恐怕没有其他简单的方法可以做到这一点。

你走在正确的轨道上。您将需要创建一个自定义 Winform,然后按照此所示进行操作 例子.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top