如何在 Windows 上复制 iTunes 风格的窗口?
Posted
技术标签:
【中文标题】如何在 Windows 上复制 iTunes 风格的窗口?【英文标题】:How do I duplicate iTunes-style windows on Windows? 【发布时间】: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”就足够了。 【参考方案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/
效果很好。
某人
【讨论】:
以上是关于如何在 Windows 上复制 iTunes 风格的窗口?的主要内容,如果未能解决你的问题,请参考以下文章
如果 Itunes:Keep iTunes Folder Organized 在 Windows 上以编程方式设置,我该如何解决
使用在 Windows 上运行的 iTunes 通过 USB 在 iOS 上安装 Ad Hoc 分布式应用程序