如何用C ++编写现代Windows软件?

时间:2010-06-25 20:52:01

标签: c++ windows api wtl

我对如何用C ++编写现代Windows软件非常感兴趣。我问过曾经从事Windows软件工作的朋友,他告诉他最后的工作是MFC,然后是WTL。他说MFC不再是现代的,但仍然使用WTL,但他不太了解。他还说WTL不是那么现代,在此之前他用纯Windows API进行编程。

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

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

6 个答案:

答案 0 :(得分:13)

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

  • WTL是一条生命线。由微软放弃,被粉丝接收,并有几个非常忠诚的粉丝。非常干净,但学习曲线陡峭,风扇基座逐渐缩小。雅虎集团不是很活跃。我不推荐它。

  • 当MSFT发布功能包时,MFC再次获得了生命。相当广泛,有点不MFC-ish,它强大支持蒙皮,对接布局和色带。我认为它会非常受欢迎,但从来没有看到很多开发者跳上它。 MSDN论坛问题一直很少。如果你有一个现有的MFC代码库,那么一定要看看。 VS2010的另一个MFC刷新增加了Win7功能,它确实保留了公司的基本UI解决方案。

  • wxWidgets仍然存在。没有亲身经历,但主啊,我听过的少数修炼者正在掀起风暴。真正的苦涩的东西。

  • Qt已经存在了很长一段时间,但相当大,特别是在去年。无论谁使用它真的喜欢它。它正在超越UI类库的范围,他们的用户正在积极寻找以字母Q开头的常见编程任务的解决方案。这是一个强大的信任投票。

但是,如果您使用的是Microsoft堆栈,那么这些类库都不是真正的UI开发所在。 WPF是房间里的大象,它的能力比上面列出的要大一百英里。它破坏设备和范例边界的能力是强大的,编写在桌面上运行的代码以及Web浏览器和手机都很难被击败。但是C ++不是其中的一部分。

答案 1 :(得分:11)

WTL, Qt, wxWidgets非常常见。

  • 它们都允许快速的GUI开发并且非常通用(在我看来,第三个选项,需要更多的时间来习惯)。第二个和第三个选项非常酷,因为它们'重新跨平台。

  • 在纯WinAPI中编写窗口非常古老,但有时可能很有趣。

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

答案 2 :(得分:9)

看看Qt - 您可能会喜欢它。除非您更喜欢非便携版本。但即使你不打算在OS X,Linux,手机上构建......,Qt框架编写得很好,有很好的文档记录并且可行。 SDK现在也包含一个不错的IDE(Qt Creator)。

答案 3 :(得分:7)

如果您的主平台是Windows,则每次都会使用WTL。 Google Chrome使用它,Spotify使用它。它最高效,最灵活,不是资源匮乏。灵活的我的意思是你可以使用纯Win32 API代码/其他C ++代码而不会有太多困难。

有关更多WTL信息:collection of WTL links

答案 4 :(得分:2)

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

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

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

答案 5 :(得分:2)

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

新面貌是重点。 MFC在Win8和Win10上看起来很糟糕,特别是所有这个功能包的眼睛糖果。纯MFC虽然好但很胖,而且视图模型部分只是暴躁而且我更喜欢WTL。但它没有记录,这是如此糟糕和可怕。

WxWidgets是一个丑陋的玩具。

QT也不再是另类。他们过分关注移动和appframework。如果你去MacOSX你根本不能使用QT(是的,它会运行,但它会让你呕吐UX)。

WinRT是如此严格,缺乏您无法使用的功能。并且您可以确定它会失败,因为没有人在平板电脑/手机上使用WinStore或Windows。那么为什么要这么麻烦呢。

如果您认为用户欣赏缓慢而胖的应用程序,WPF就可以了。它看起来更好,但所有的眼睛糖果现在不再是UI设计指南的一部分,并且小部件的功能集不如Win32本机小部件。难以置信但真实。我锁定你使用不可移植的C#,在我看来这是不赞成的,因为现在性能再次重要(因为性能是能量,是生命时间)。

即使是Herb Sutter和其他高级MS员工也告诉你C ++是未来。而下一个杀手级应用程序是基于C ++ 14而微软知道的。