学习Win32开发GUI应用程序

时间:2010-05-25 12:22:32

标签: .net c++ windows winapi

如果你是一名c ++程序员,你会选择Win32 API或.NET来开发GUI应用程序吗?

4 个答案:

答案 0 :(得分:8)

我会选择Qt。它是一个跨平台的C ++ GUI框架。

答案 1 :(得分:3)

Win32是一个API(应用程序编程接口)。 .NET也是如此。 POSIX也是如此。前两个将GUI工具包集成到主API中,但您可以使用其他工具包,如Qt(如Skildrick建议)或wxWindows(如果您选择)。对于* nix,主要的API是POSIX,几乎所有的都使用X11作为低级图形层,然后你需要一些GUI工具包(没有集成到POSIX中)。根据您想要的显示器类型,OpenGL是另一个非常好的高度可移植的GUI工具包,虽然它专注于高速矢量图形而不是UI小部件。

使用Win32 API的集成GUI工具包的一个很好的理由是Win32 API的许多其他部分使用它,例如WSAAsyncSelect和MsgWaitForMultipleObjectsEx是非GUI功能,它们集成到GUI消息处理中。一个好的包装器工具包将为您提供足够的控制以继续使用它们,但很少有人这样做,因为这种方法与非Windows操作系统非常不同,并且大多数替代工具包都重视可移植性以上的功能。

即使是.NET,它是从头开始设计为在Windows上以最佳方式运行的,因此无法使用异步过程调用或来自UI线程的等待定时器,因为.NET中的消息处理都不使用MsgWaitForMultipleObjects。所以你最终被迫使用多个线程和大量令人讨厌的同步代码。

但远离MFC。它基本上是在没有编译器支持的情况下实现异常的学术练习,而不是您想要用于严肃应用程序的那种框架。在更好地理解现代C ++设计之后,大多数其他“特性”都被添加了,但是继续使用早期黑客对异常和虚拟继承开始的危险混乱风格,以保持事物的一致性。今天有更好的选择。

答案 2 :(得分:1)

我会说两者都做。在.NET问世之前,我学到了一些Win32的东西。我玩了Win32 API本身和MFC。这很有教育意义。我学到了很多关于Windows如何处理您的应用程序以及它希望您做什么的事情。如果我现在回去学习.NET,我相当肯定我会比没有任何经验的人更感激。

答案 3 :(得分:0)

试试这本免费书 - 我发现它非常好。它是C#和.net的C ++程序员指南,并且通常会用普通的小伙子跳过。

http://www.charlespetzold.com/dotnet/