12

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

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

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

4

6 回答 6

11

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

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

这看起来像一些非常好的东西。它的系列共有 3 篇文章,运行良好,而且在 Vista 上也是如此!

于 2008-09-20T04:26:36.607 回答
5

Google Chrome没有使用 Vista SDK 在 XP 上实现这一点。如果您查看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 主题的方法,否则这是问题的答案,但我显然无法将自己的帖子标记为答案。

于 2008-09-04T18:26:09.090 回答
4

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

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

于 2008-09-05T21:26:53.000 回答
0

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

你在正确的轨道上。您将需要创建一个自定义 Winform,然后按照本示例中的说明进行操作。

于 2008-09-03T20:17:03.623 回答
0

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

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

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

  • uxtheme.dll
  • dwmapi.dl
于 2008-09-03T22:43:35.597 回答
0

@Jonathan Holland:这可以通过.NET 完成吗?

是的,使用 DllImport。是一篇很好的博客文章

于 2008-09-04T01:36:58.923 回答