c++ - 我应该为富客户端应用程序选择什么 Windows API?

标签 c++ windows visual-c++ cross-platform

我在 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/

相关文章:

visual-c++ - 霍夫变换未检测到的突出线条

c++ - MFC 事件处理程序

c++ - 了解 VC++ 项目/解决方案资源管理器文件层次结构

C++回调系统。指向成员函数的指针

c++ - ShellExecuteW 在 Windows 8.1 上运行不正常?

c++ - 有一个 .exe 的路径,我怎么知道它是否正在运行?

C++目录搜索

multithreading - C++/CLR 中的线程编程

c++ - LNK2001 未解析的外部符号与 CPP_XLOPER

C++:如何获取在同一类的不同函数中定义的元素?