MFC 作為 Windows 原生的 GUI 庫還可以在項目中用嗎?

一來發現在國內還是有公司專門給MFC做UI庫的

二來是不是國內還有大的windows客戶端應用在用MFC啊

順便問下,如果不用MFC的話,什麼GUI庫比較好呢?

QT? wxWidgets? WPF? Winform?

ps. 發現盛大的開源項目Snda Humming也在用MFC


收妖!

如果是做Windows獨佔的軟體而且是新項目,如果沒有什麼特別的要求,我覺得從.NET開始會是個比較好的選擇。現在可以看出的是微軟在客戶端開發已經全面推進.NET 4 + WPF(看看Windows 8預覽版的UI就能發現這一點),而且現在Windows部分大量的開發支持都提供.NET的介面,即使是封裝不完整功能比較矬的部分,比如CryptoAPI的.NET封裝,也可以通過P/Invoke解決。所以除非是繼承已有的項目,或者項目組確實有足夠的理由不願重新培訓,否則再用MFC多少有點不太明智。WinForms也不要選擇,自從微軟力推WPF之後,這孩子還沒長成就被自家家長拋棄了。

但是如果是已有的項目已經用了MFC並做後續開發,那麼倒也沒必要迴避MFC。畢竟MFC還是微軟長期支持的。

如果是打算跨平台的軟體,那麼選擇就比較多。WinForms不要考慮了。Mono對WinForms沒有.NET完整。如果做桌面軟體,整體上看我推薦wxWidgets多於QT,主要是因為wxWidgets在不同平台上力求達到本地觀感,所以它能做到Linux上和GTK+界面保持一致而Windows上和MFC觀感一致。但是缺點是社區支持,開發力量上比Qt差一些。Qt主要的好處是可以做嵌入式開發,適應性更廣,但缺點是界面——這東西見仁見智,但是我個人不喜歡它的界面。


謝邀。

不過我一直不太做這種窗口程序,做的幾個窗口程序都是用C#的WinForm做的。

我雖然不喜歡MFC,但是MFC也不能說是一個不好的東西。畢竟,給一些給客戶做的項目,還是需要考慮部署的問題,客戶可不希望使用這個產品之前,要需要裝這個那個的一堆東西。還有一點,QT的程序員可能不一定好找,反正,比MFC的難是肯定的。另外,有一些公司還做MFC的原因,是因為歷史上有一些MFC開發的項目需要維護,所以還要繼續做。

所以,我認為,MFC的好處僅僅是部署起來可能不用安裝什麼東西稍微方便一點,以及可以通過C++編寫各種各樣意想不到的效果。我也沒有認真學過MFC,據說框架比較複雜,C++對於開發人員的要求也比較高。如果從開發方便程度和效率的角度來說,WinForm則完勝MFC,我也比較推薦用這個。另外,如果有跨平台需求的話,Qt也是一個不錯的選擇。WPF的話,能做出很炫麗的效果,不過硬體開銷也是相當的驚人的。

所以,結論就是,MFC還可以用,也只是還可以用。我個人更偏好WinForm。


如果是小項目,哪個順手用哪個。

對於比較新的C#多一點提醒。它的開發效率要比MFC之類要好很多,但很多老舊的windows上並沒有安裝.NET Framework, 需要考慮。另外需要用混淆器對編譯後的代碼做混淆,否則邏輯太清晰相當於開源。混淆前後效果可以用reflector反編譯看看。

如果是大項目,很多大項目都有明確的前台和後台。後台邏輯與表現層無關,而表現層則會相對簡單。由於後台一般已經提供了自己的MVC模型,前台可以直接依賴於Windows API, 自己搭建所需要的結構,或者考慮用C#來更快地寫出表現層。通常表現層技術含量不高,此處是用C#容易反編譯的缺點也不是那麼重要。如果需要跨平台,會選擇直接另寫表現層來得到該平台下最佳的用戶體驗,維護起來也無需關心不同平台下的表現。例如如果你用Qt來做App那恐怕進Mac App Store就會成問題。


眼光要放長遠些,眼光要放的更開些。

國內的軟體開發比國外晚個3,5年左右,.net在開發和維護效率上無與倫比,在Windows上是不可阻擋的潮流。我發現印度和澳大利亞的開發者都全面轉向.net了,國內還在糾結中.

我理解大家不推薦的主要原因還是老人對.net不熟悉,畢竟mfc什麼的以前做的很熟嘛,現在要我和小P孩一起學全新的新東西,人都是有惰性的,人都是託大的,所以...

至於其它什麼.net 拖慢系統速度,桌面沒有人用.net開發什麼的,都是想當然,很大程度是自己找的借口。

對於新項目,mfc是首選要排除的,如果你要微軟推薦,顯然會是WPF

=====

修改一下,我和一些開發支持的兄弟討論了一下,如果是該桌面程序都是用些標準的控制項,不需要比較炫的效果,那麼用WinForm是比較合適的,開發起來比較快,以前MFC的一些經驗也可以用上, WinForm微軟會長期支持,並會相應更新


mfc確實用的少了,舉幾個開源例子

google的chrome用的wtl的框架和自己的skia繪圖,自己實現的directui

金山的那一堆也是自己實現的directui

至於樓上幾位說的.net,現在還沒看到啥桌面用這個的,畢竟國內xp還是佔主流,你一個程序要帶幾十上百m的.net frame是不是有點誇張,而且這玩意會拖慢系統速度


如果mfc滿足需求,推薦使用mfc.

.net不適合做桌面程序。


推薦閱讀:

程序員如何挽救日漸失控的項目?
如何評價王垠的 《討厭的 C# IDisposable 介面》?
如今 Windows 軟體開發究竟該用什麼庫,C#、Qt,還是其他?
當一個程序員失去了對代碼的興趣,變得沒有目標沒有動力,是怎樣的體驗?
C# 作為一種靜態類型語言,為什麼會引入 var?

TAG:MicrosoftWindows | 圖形用戶界面 | QtC開發框架 | C | C# | MFC | WindowsPresentationFoundationWPF |