我在 Mac OS X 和 Linux 上开发富客户端软件。我希望将应用程序移植到 Windows 而不是 Microsoft 产品的用户,我对 Windows 总体上不是很熟悉。
我熟悉的:
在 Mac OS X 上,我可以选择 Cocoa 和 Objective C 或 Carbon 和 C/C++。在 Linux 上,我可以选择 GTK+ 和 C/C++ 或 Qt 和 C++。我更喜欢 Mac OS X 上的 Cocoa 和 Linux 上的 GTK+。 Interface Builder for Cocoa 和 Glade for GTK+ 让我的生活变得轻松。在这些操作系统中创建富客户端是有趣的。
我的核心类,或 MVC 中的“模型”,是用跨平台 C++ 编写的。用户界面类,或 MVC 中的“ View 和 Controller ”,是用“首选”语言和 GUI API 为每个平台编写的。
C++ 是我最熟悉的语言。我广泛使用 Boost 库。特别是智能指针、线程和 asio 网络库。对于 Unicode、本地化等,我使用 International Components for Unicode (ICU)。
问题 1:与我的跨平台模型类兼容的 Windows 平台“首选”语言和 GUI API 是什么?
问题 2:如何访问我的跨平台模型类?
例如,在 Mac OS X 上,我通过 Controller 类访问我的模型类。 Controller 类在 Objective-C++ 中实现。 Objective-C++ 是 C++ 和 Objective-C 的混合体。 View 对象与 Objective-C 中的 Controller 对象“对话”,而 Controller 对象与 C++ 中的模型对象“对话”。
在 Linux 上,所有类都是用 C++ 实现的。
最佳答案
在 Windows 上并没有真正的“首选”语言和 API,更像是很多选择。最明显的是直接对操作系统的原始 Win32 调用(所以实际上只是 C 调用),或者在其之上的薄抽象(例如 WTL,Windows 模板库,它是 C++),或者更厚的抽象(例如 MFC,也C++).
Microsoft 最近大力插入 WPF,但那是托管 .NET 世界的一部分。您可以在其中编写 C++,因此您可以移植您的应用程序,但我希望这会付出很大的努力。
鉴于您在 Linux 上使用 GTK+ 或 QT,显而易见的事情是考虑在 Windows 上同时使用它们,因为两者都存在 - 这样您就可以使 Linux 和 Windows 版本几乎相同。它们不是纯 Windows 应用程序的自然选择,因为它们最初并非来自 Windows 世界,但考虑到您的背景,它们会很有意义。您可能需要花一些时间来调整它们以使 Windows 应用程序的外观和感觉恰到好处,但由于不需要编写全新的表示层,这应该足以弥补这一点。
关于c++ - 我应该为富客户端应用程序选择什么 Windows API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/284103/