【问题标题】:How do I duplicate iTunes-style windows on Windows?如何在 Windows 上复制 iTunes 风格的窗口?
【发布时间】:2012-06-19 05:55:28
【问题描述】:

谁能提供一些关于如何在 Windows 中“复制”iTunes 样式窗口的见解?具体来说,我正在寻找以下功能:

1) 圆角窗口 2) 顶部和底部工具栏 3) 圆形文本字段

我目前正在尝试使用 Real Studio 进行一些跨平台开发,虽然我发现了在 OS X 中执行圆角窗口的机制(声明对 HIWindowSetContentBorderThickness 或 SetContentBorderThickness 的方法调用),但我在MSDN 如何在 Windows 中做类似的事情。显然,Apple 在实际为 Windows 编写 iTunes 时做到了这一点。也许他们从头开始编写自定义控件。

旁注:我发现这篇几年前的文章简要讨论了它 (http://discuss.joelonsoftware.com/default.asp?joel.3.454369.12),但这几乎是我能找到的全部内容。

即使我不能完全复制它,Windows 库可能包含我需要“手动”完成的功能的某个方向也会很好。任何进一步的帮助将不胜感激。

【问题讨论】:

  • 您只是想要圆角窗口等,还是想要完全复制 iTunes?前者很容易;后者需要大量的设计和编码,并且一旦 Apple 再次更改内容,将不再完全复制 iTunes,因此您可能想要挖掘 CoreFoundation/etc 中的私有功能。 Apple 与 iTunes、QuickTime 和 Safari 捆绑并使用它们的端口。那么,您是否追求 (a) 用于异形窗口的 Windows API,(b) 克隆 Apple 所做的一切的完整解决方案,或者 (c) 关于如何获取 Apple 私有方法的建议?
  • 如果你有的话,我会接受所有建议,但选项“A”就足够了。

标签: windows itunes rounded-corners realstudio


【解决方案1】:

没有用于制作 Apple 风格圆角的 API,但有用于创建所需形状的窗口(框架窗口和控件)的低级 API。

我不使用 RealStudio,但我相信它允许您访问 .NET 和本机 Win32 API,所以:

如果您使用的是 .NET Windows.Forms,请阅读 Shaped Windows Forms and Controls in Visual Studio .NET。它是为 VB7 编写的,但应该很容易翻译成您喜欢的语言。

如果您使用的是原始 Win32 API,至少有两种方法可以做到这一点。最简单但最有限的方法是调用SetWindowRgn API,它将窗口的形状设置为您可以创建为 HRGN 的任何形状。但这可能不会适合你。你不想要锯齿状的边缘;你想要平滑的曲线,带有 alpha 混合的边框,也许还有阴影。 (至少 Apple 是这样做的。)Layered Windows API 就是这样做的方法。它允许任意形状(如果您使用 UpdateLayeredWindow,甚至可以即时更改,尽管您不需要该功能来模拟 iTunes)、alpha 透明度和复杂的命中测试。由于原始文章已经过时,并且没有涵盖所有功能,请参阅 Layered Windows 获取当前文档,其中包含参考链接。

【讨论】:

    【解决方案2】:

    有一个第三方控件可以做你想做的事。它适用于 Mac 和 Windows。

    http://www.madebyfiga.com/fgsourcelist/

    效果很好。

    某人

    【讨论】:

      猜你喜欢
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多