2010-05-25 101 views
0

如果你是一名C++程序員,你會選擇Win32 API還是.NET來開發GUI應用程序?學習Win32開發GUI應用程序

+0

可能重複的[如何使用C++爲Windows應用程序創建GUI?](http://stackoverflow.com/questions/488837/how-do-i-create-a-gui-for-a- windows-application-using-c) – 2010-05-25 12:30:49

+0

刪除評論,因爲它提出了主觀和議論的問題。沒有評論,問題就是另一個問題的完全重複。評論的問題是主觀的和議論的,而且*仍然*是另一個問題的確切副本。 – 2010-05-25 12:31:42

回答

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操作系統有很大不同,而且大多數替代工具包都認爲可移植性高於功能。

即使是從底層開始在Windows上運行最佳的.NET,也無法使用異步過程調用或來自UI線程的等待定時器,因爲.NET中的消息處理都不使用MsgWaitForMultipleObjects。所以你最終不得不使用多線程和大量的同步代碼。

但是遠離MFC。這基本上是一個在沒有編譯器支持的情況下實現異常的學術練習,而不是您想要的嚴格應用程序的框架。在現代C++設計被更好地理解之後,大多數其他「特性」得到了增加,但繼續使用由保持事物一致性的名稱對異常和虛擬繼承的早期入侵開始的危險混亂風格。今天有更好的選擇。

+0

謝謝先生! – Gareth87 2010-05-25 12:50:55

+0

.net圖形用戶界面不僅僅是基於API的; WPF是一個場景圖而不是API方法,可以適用於某些類型的應用程序。 – 2010-05-25 13:03:33

+0

還有一個API來構建場景圖。但我小心使用「GUI工具包」而不是API,而WPF絕對是一個GUI工具包。 – 2010-05-25 14:30:42

8

我會去Qt。這是一個交叉平坦的C++ GUI框架。

+0

...也是一個很好的框架。 :) – Donotalo 2010-05-25 12:48:30

1

我說一舉兩得。在.NET發佈之前,我學到了一點Win32的東西。我玩弄了Win32 API本身和MFC。這非常有教育意義。我學到了很多關於Windows如何對待你的應用程序以及它希望你做的事情。如果我現在回去學習.NET,我相當肯定,如果沒有以前的經驗,我會比這更感激。