13

我对当今如何用 C++ 编写现代 Windows 软件非常感兴趣。我问过我的朋友,他曾经做过 Windows 软件,他说他最后工作的是 MFC,然后是 WTL。他说 MFC 不再是现代的东西,但 WTL 仍在使用,但他不知道更多。他还说 WTL 并没有那么现代,在此之前他使用纯 Windows API 进行编程。

如何为 Windows Vista 或 Windows 7 编写软件?你还在用 WTL 吗?MFC 和纯 Windows API 呢?还是现在有其他图书馆?

我对此了解不多,但是 C# 或其他 .NET 语言在编写现代 Windows 软件时是否已取代 C++?

4

6 回答 6

13

从我过去几年所见的情况来看:

  • WTL 在生命线上。被微软抛弃,被粉丝捡起来,有几个非常忠实的追随者。非常干净,但学习曲线陡峭,粉丝群不断减少。雅虎集团不是很活跃。我不能推荐它。

  • 当 MSFT 发布功能包时,MFC 又获得了新生。相当广泛且有点非 MFC 风格,它对蒙皮、停靠布局和功能区具有强大的支持。我原以为它会大受欢迎,但从未见过很多开发者喜欢它。MSDN 论坛的问题一直很少。如果你有一个现有的 MFC 代码库,那么一定要看看。VS2010 的另一个 MFC 更新添加了 Win7 功能,它确实保留了公司的基本 UI 解决方案。

  • wxWidgets 仍然存在。没有亲身经历,但是主啊,我听过的几个修炼者正在掀起一场风暴。真的很苦的东西。

  • Qt 已经存在了很长一段时间,但已经有了很大的发展,尤其是在去年。用过的人都非常喜欢。它也超越了 UI 类库的范围,他们的用户正在积极寻找以字母 Q 开头的常见编程任务的解决方案。这是一次强有力的信任投票。

但是,如果您在 Microsoft 堆栈中,则这些类库都不是真正的 UI 开发所在。WPF 是房间里的大象,它的功能超出了上面列出的一百英里。它打破设备和范式边界的能力非常强大,编写在桌面、Web 浏览器和手机上运行的代码是无与伦比的。但 C++ 不是其中的一部分。

于 2010-06-25T21:22:27.473 回答
12

WTL、 Qt、 wxWidgets使用非常普遍。

  • 它们都允许快速的 GUI 开发并且非常通用(在我看来,第三种选择需要更多时间来适应)。第二和第三个选项真的很酷,因为它们是跨平台的。

  • 用纯 WinAPI 编写窗口非常老派,但有时可能很有趣。

  • C#与以前的选项相比,构建窗口的方法甚至更快,但灵活性稍差。

于 2010-06-25T20:58:32.020 回答
9

看看Qt——你可能会喜欢它。当然,除非您更喜欢非便携式版本。但是,即使您不打算在 OS X、Linux、手机……上构建,Qt 框架也写得很好,有很好的文档并且可以正常工作。SDK 现在还包含一个不错的 IDE(Qt Creator)。

于 2010-06-25T20:52:48.443 回答
8

如果您的主要平台是 Windows,则每次 WTL。谷歌浏览器使用它,Spotify 使用它。它是最高效、最灵活的,不是资源消耗。所谓灵活,我的意思是你可以毫无困难地将它与纯 Win32 API 代码/其他 C++ 代码一起使用。

更多 WTL 信息:WTL 链接集合

于 2010-09-02T22:38:12.353 回答
2

在 .NET(C#、VB.NET、...)中,GUI 编程的前沿是WPF目前(取代 WinForms)。.NET 中的编译代码实际上是CIL,它在运行时由 JIT 编译为本机代码。这样做的好处是您不必关心 64 或 32 位目标系统。

在 C++ 中,Qt 似乎是一个很好的解决方案,因为它设计简洁并提供了大量服务。我不喜欢 Qt 的编译往返,它太慢了,有一个 moc 编译器,编译器,然后链接,与 C#/.NET 相比,它需要很长时间才能获得可执行文件。另一方面,即使在嵌入式系统中,您也可能会遇到它,这是在这种情况下有趣的原因。

我建议您至少看看 C#/.NET 并在决定之前对其进行试验。

于 2010-06-25T21:23:13.583 回答
2

在评估之后,我发现纯 Win32 或 WTL 是编写不基于 WRT 的现代风格 win 应用程序的唯一方法。

新面貌是重点。MFC 在 Win8 和 Win10 上看起来很糟糕,尤其是在使用所有这些功能包时。纯 MFC 很好但很胖,视图模型部分简直太糟糕了,我更喜欢 WTL。但它是无证的,这非常糟糕和可怕。

WxWidgets 是一个丑陋的玩具。

QT 也不再是替代品了。他们过于关注移动和应用程序框架。而且,如果您使用 MacOSX,则根本无法使用 QT(是的,它会运行,但会让您对 UX 感到厌恶)。

WinRT 是如此的限制和缺乏你不能使用它的功能。您可以确定它会失败,因为没有人在平板电脑/手机上使用 WinStore 或 Windows。那何必呢。

如果您认为您的用户喜欢慢而胖的应用程序,那么 WPF 就可以了。它看起来更好,但现在所有吸引眼球的东西都不再是 UI 设计指南的一部分,并且小部件的功能集少于 Win32 原生小部件。难以置信但真实。而且我将您锁定为使用不可移植的 C#,这在我看来已被弃用,因为现在性能再次变得重要(因为性能是能量,是生命时间)。

甚至 Herb Sutter 和其他高级 MS 员工都告诉你 C++ 是未来。下一个杀手级应用是基于 C++14 构建的,微软知道这一点。

于 2015-12-13T07:34:34.907 回答