簡體   English   中英

學習Win32開發GUI應用程序

[英]Learning Win32 to develop GUI Applications

如果您是c ++程序員,您會選擇Win32 API或.NET來開發GUI應用程序嗎?

我會選擇Qt 這是一個跨平台的C ++ GUI框架。

Win32是一個API(應用程序編程接口)。 .NET也是如此。 POSIX也是如此。 前兩個工具具有集成到主要API中的GUI工具包,但是您可以選擇使用其他工具包,例如Qt(由Skildrick建議)或wxWindows。 對於* nix,主要API是POSIX,幾乎所有API都使用X11作為低級圖形層,因此您需要在頂部放置一些GUI工具包(POSIX中沒有集成)。 根據您想要的顯示類型,OpenGL是另一個非常好的高度可移植的GUI工具包,盡管它專注於高速矢量圖形而不是UI小部件。

使用Win32 API的集成GUI工具包的一個很好的理由是Win32 API的許多其他部分都使用它,例如WSAAsyncSelect和MsgWaitForMultipleObjectsEx是非GUI功能,已集成到GUI消息處理中。 一個好的包裝器工具包將為您提供足夠的控制權以繼續使用它們,但是很少有這樣做的,因為這種方法對於非Windows操作系統而言是非常不同的,並且大多數替代工具包都認為可移植性高於功能。

甚至從頭開始設計為在Windows上最佳運行的.NET也不能使用來自UI線程的異步過程調用或可等待的計時器,因為.NET中的任何消息處理都不使用MsgWaitForMultipleObjects。 因此,您最終不得不使用多個線程和大量麻煩的同步代碼。

但是請遠離MFC。 從根本上講,這是在沒有編譯器支持的情況下實現異常的學術活動,而不是您想要用於嚴重應用程序的框架。 在現代C ++設計被更好地理解之后,大多數其他“功能”得到了補充,但是它們繼續使用危險的凌亂風格,這種混亂的風格是由早期對異常和虛擬繼承的入侵開始的,目的是保持事物的一致性。 今天有更好的選擇。

我想都做。 在.NET出現之前,我學到了一些Win32知識。 我玩過Win32 API本身和MFC。 這是很有教育意義的。 我學到了很多有關Windows如何對待您的應用程序以及它希望您做的事情的知識。 如果我現在回過頭來學習.NET,我肯定會比沒有任何經驗的人更喜歡它。

試試這本免費的書-我發現它很好。 這是面向C ++程序員的C#和.net指南,並且跳過了通常的小東西。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM