回答
WinAmp通常不会提供自己的GUI - 它将它委托给“皮肤”。你可以下载几十个例子,除非记忆特别严重,否则文档也很容易获得。
从外观的角度来看,iTunes会使用某种翻译层来让基本上是在Windows上运行的Mac用户界面(苹果公司最近认定的那种东西是如此邪恶,现在禁止在iPhone上显然是iPad)。
由于任何可能被认为对苹果负面的东西经常被视为异端,我会指出所有包含在iTunes for Windows中的.xib
文件。一个.XIB文件(至少通常)由Apple的Interface Builder生成,用于保存OS/X程序的资源,并在部署之前编译为.NIB文件。 Windows通常不会使用.XIB或.NIB文件,并且我认为Apple可能包括一个兼容性层来在Windows上使用它们(尽管我从来没有花时间去查找它存储的文件或类似的东西)。
编辑:(响应马蒂亚斯的最新评论)。渲染它乏味但相当简单。您基本上从皮肤输入(例如)并创建一个所有者绘制控件(例如一个按钮)并基于该输入呈现按钮。
最简单的方法是为您的控件设置固定位置,并要求用户为背景和控件绘制/包含位图。在这种情况下,您只需加载背景位图并将其显示为涵盖应用程序的整个客户区域(并且您可能会使用无边框窗口,这就是所有显示的内容)。你会将所有的控件指定为自己绘制的,并且为每个控件加载它们的位图并将其粘贴到该控件的屏幕上。由于通常不会有可见的标题栏,因此您经常需要处理WM_NCHITTEST
(或其他系统上的等效项)以让用户拖动窗口。
如果您想要更复杂一点,您可以添加诸如允许它们为每个控件指定大小和位置等,也可以指定某些控件根本不会显示。再次,这并不是非常难以管理 - 例如,在Windows下,大多数控件都是窗口,您可以在创建窗口时指定大小和位置。如果用户在运行时加载了不同的皮肤,则可以调用MoveWindow
来根据需要移动/调整每个控件的大小。
我并不是故意把它变成一场辩论,但我认为你在Windows上的iTunes与在iPhone上的Flash或其他跨平台代码等同是正确的!不过,还要注意iTunes在Mac上的无缝运行情况,但它在Windows上非常尴尬和不合适。考虑它是一个示范! – mbmcavoy 2010-04-28 19:41:51
你是什么意思,它代表那个“皮肤”?我的问题不是特定于Winamp和iTunes,而是一些应用程序如何呈现个性化UI。知道它们是如何通过“皮肤”呈现它仍然很有趣。 – 2010-04-28 19:50:37
@Luca:WinAmp的皮肤开发文档位于:http://dev.winamp.com/skin-developers – 2010-04-28 20:06:18
我假设你的意思是创建一个GUI应用程序而不是GUI框架。
有很多GUI框架可用于Windows。
有些
- 的wxWidgets(www.wxwidgets.org)
- QT(http://qt.nokia.com/products)
- ,当然还有古老的MFC框架(http://msdn.microsoft.com/en-us/library/d06h2x6e%28VS.90%29.aspx)
如果你想有一个更完整的列表,查看MFC的维基百科文章(http://msdn.microsoft.com/en-us/library/d06h2x6e%28VS.90%29.aspx)并滚动到底部。
这些GUI框架中的每一个都充分地记录在Web上。
不,我的意思是GUI框架 – 2010-04-28 19:05:45
看看这些链接,他们是GUI框架,所以你可以拿起一些想法,他们如何处理它,并从那里去。例子是一个很好的学习工具。 ;) – ssube 2010-04-28 19:20:49
- 1. MATLAB:图形用户界面,自定义图例
- 2. 在故事板中使用自定义用户界面图形?
- 3. Android中的自定义来电图形用户界面
- 4. Java图形用户界面
- 5. 图形用户界面
- 6. 图形用户界面
- 7. 图形用户界面 - Tkinter
- 8. 自定义页面和图形用户界面扩展与SDL Tridion 2011
- 9. 下拉式自定义用户界面
- 10. 自定义iPhone用户界面组件
- 11. iPhone自定义用户界面组件
- 12. 自定义用户界面程序
- 13. 自定义用户界面不工作
- 14. 扩展VSCode,自定义用户界面
- 15. ios自定义用户界面旋转
- 16. iSpeech SDK与自定义用户界面
- 17. TYPO3 - 自定义后端用户界面
- 18. iOS用户界面自定义套件?
- 19. Monodroid自定义用户界面控件
- 20. Xcode自定义用户界面对象
- 21. C++图形用户界面教程:未定义引用的TextOut
- 22. 自定义角度圆形进度条SVG用户界面
- 23. 黑莓自定义用户界面和自定义组件
- 24. 在Android中使用图形构建自定义界面
- 25. 自定义界面
- 26. 如何在后台运行RTerm.exe(运行自定义的图形用户界面)
- 27. 完全自定义的图形用户界面的(最好在Java中)
- 28. 分层面板图形用户界面
- 29. PowerShell/.NET 4图形用户界面 - 内部Windows图标?
- 30. jQuery Mobile的用户界面,输入BTN自定义图标
最直接和最低级的方法是捕获“WM_PAINT”消息,它给你一个“设备上下文”(基本上是一个画布),并手动绘制任何你想要的。当然,可能有更先进和抽象的方式来做到这一点。 – 2010-04-28 19:02:34
这很简单:聘请100名程序员。告诉他们不要使用标准的Windows控件和类库并自行编写。 29.2万工时后,你有一些看起来不标准的东西。 – 2010-04-29 00:42:12