今天看到幾大公眾號聯合送書,有算法、python、容器、Spring等相關的書籍,其中有一本 << VC++深入詳解>> 顯得有點與眾不同,引起了我的注意,觸發了點滴回憶……
遙想多年以前,這本書也是我的入門書籍之一,有了電腦后,裝了開發環境嘗試編譯書中的例子,從此開始了 MFC 的入坑之路。時至今日,在工作中還在用,或許未來的一段時間里還要繼續使用。
雖然我還在使用,但是對於之前沒接觸過 MFC 打算學習的人來說,建議還是不要學了。不過在今天這個時代,打算學習的人想來不會太多,畢竟現在是雲、大數據、萬物互聯的時代,大多數人都在學 Java、Python、Docker 及其相關的技術。雖然我內心強大,但想到此處還是不由得有些落寞……
學什么
如果不學 MFC,那打算開發桌面客戶端使用什么技術呢?
如果使用的語言是 C++,建議使用 Qt;如果使用的語言是 C#,建議使用 WinForm。下面從不同的方面做些簡單的比較:
開發環境:Qt Creator 是 Qt 的官方開發環境,但是在我短暫的使用過程中還是覺得的 VS 比較好用,通過官方提供的 VS 插件,搭配熟悉的 VS 就是最優的 Qt 開發環境。界面設計方面,Qt 的設計器和 WinForm 的設計器都比較好用。
基礎類庫:有了豐富的基礎類庫,才能提高開發效率。在這一點上 Qt 和 .NET(WinForm 只是其中的關於界面的部分)都含有各種各樣的類庫來滿足不同的開發需求。
資料豐富:Qt 和 WinForm 都有非常豐富的資料,無論是官方提供的技術文檔,還是已經出版的技術書籍。
跨平台:Qt 是基於 C++ 的跨平台的庫,而 WinForm 只能在 Windows 平台使用。(當然在其它平台可以使用 .NET 的開源實現版本 Mono,Mono 是由 Xamarin公司開發的跨平台 .NET 運行環境,已被微軟收購,而官方的 .NET 也已開源。)
是 Qt 還是 WinForm,更多的可能還是要根據工作的不同需求來定。如果還沒參加工作,可以都了解下,然后根據個人喜好進行選擇。這些都是界面相關的部分,在學習這些的同時,還要學習軟件開發相關的其它通用的知識,而這些才是需要更加關注的地方。
MFC 的 3 個問題
回到 MFC,為什么不建議學習它?簡單說下我的 3 個理由:
MFC 是微軟創建的類庫,而現在微軟已經將其放棄。多年不再更新,且新版本的 VS 默認不再安裝(我安裝的版本中 VS2015 已經默認不再安裝)。
基礎類庫:前面提到過有了豐富的基礎類庫,才能提高開發效率。而MFC 只是對 Win32 的封裝,類庫不豐富。
界面資源:使用 MFC 開發界面時,產生的界面資源都存儲在 .rc 文件中,控件 ID 都存儲在 resource.h 中。多人開發進行合並時容易產生 ID 沖突等問題。而且由於資源都是存儲在一個文件中,已開發的界面難以復用。
其它
除了 MFC、Qt、WinForm,還有其它一些桌面客戶端開發技術:
- Electron:該技術是近幾年比較流行的桌面客戶端開發技術,值得關注。官方介紹是“使用 JavaScript, HTML 和 CSS 構建跨平台的桌面應用”。我目前使用的基於該技術的應用有 VS Code、Typora、Yu Writer等。
- CEF:學習資料比較少、難度比較大。網易的一系列軟件如網易雲音樂、有道詞典、雲筆記都基於此開發。
- wxWidget:基於 C++;跨平台;類庫豐富;比較小眾。
- WPF:屬於.NET 的一部分,相對於 WinForm 學習難度大一些;
- WTL:基於 C++;資料少;只與界面相關。
- ……
- - - End - - -

本文作者: Lzl678
本文鏈接: https://www.cnblogs.com/Lzl678/p/11032326.html
版權聲明:本博客所有文章除特別聲明外,均采用 CC BY-NC-SA 4.0 許可協議。轉載請注明出處!