1

谁能提供一些关于如何在 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 库可能包含我需要“手动”完成的功能的某个方向也会很好。任何进一步的帮助将不胜感激。

4

2 回答 2

1

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

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

效果很好。

某人

于 2012-11-27T05:59:23.800 回答
1

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

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

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

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

于 2012-06-28T21:12:44.893 回答