我对如何用C ++编写现代Windows软件非常感兴趣。我问过曾经从事Windows软件工作的朋友,他告诉他最后的工作是MFC,然后是WTL。他说MFC不再是现代的,但仍然使用WTL,但他不太了解。他还说WTL不是那么现代,在此之前他用纯Windows API进行编程。
如何为Windows Vista或Windows 7编写软件?你还在使用WTL吗?那么MFC和纯Windows API呢?或者现在还有其他图书馆吗?
我对此并不了解,但在编写现代Windows软件时,是否用C#或其他.NET语言取代了C ++?
答案 0 :(得分:13)
从过去几年我所看到的情况来看:
WTL是一条生命线。由微软放弃,被粉丝接收,并有几个非常忠诚的粉丝。非常干净,但学习曲线陡峭,风扇基座逐渐缩小。雅虎集团不是很活跃。我不推荐它。
当MSFT发布功能包时,MFC再次获得了生命。相当广泛,有点不MFC-ish,它强大支持蒙皮,对接布局和色带。我认为它会非常受欢迎,但从来没有看到很多开发者跳上它。 MSDN论坛问题一直很少。如果你有一个现有的MFC代码库,那么一定要看看。 VS2010的另一个MFC刷新增加了Win7功能,它确实保留了公司的基本UI解决方案。
wxWidgets仍然存在。没有亲身经历,但主啊,我听过的少数修炼者正在掀起风暴。真正的苦涩的东西。
Qt已经存在了很长一段时间,但相当大,特别是在去年。无论谁使用它真的喜欢它。它正在超越UI类库的范围,他们的用户正在积极寻找以字母Q开头的常见编程任务的解决方案。这是一个强大的信任投票。
但是,如果您使用的是Microsoft堆栈,那么这些类库都不是真正的UI开发所在。 WPF是房间里的大象,它的能力比上面列出的要大一百英里。它破坏设备和范例边界的能力是强大的,编写在桌面上运行的代码以及Web浏览器和手机都很难被击败。但是C ++不是其中的一部分。
答案 1 :(得分:11)
它们都允许快速的GUI开发并且非常通用(在我看来,第三个选项,需要更多的时间来习惯)。第二个和第三个选项非常酷,因为它们'重新跨平台。
在纯WinAPI中编写窗口非常古老,但有时可能很有趣。
C#
构建窗口的方法更加快速,但灵活性稍差。
答案 2 :(得分:9)
看看Qt - 您可能会喜欢它。除非您更喜欢非便携版本。但即使你不打算在OS X,Linux,手机上构建......,Qt框架编写得很好,有很好的文档记录并且可行。 SDK现在也包含一个不错的IDE(Qt Creator)。
答案 3 :(得分:7)
有关更多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而微软知道的。