mfc和win32區別

露水上的青蛙發表於2013-07-31
Win32通常是指sdk程式設計方法,app沒有被封裝,開發人員需要自己搭程式框架;
mfC則是以C++類的形式封裝了Windows的API,並且包含一個應用程式框架,以減少應用程式開發人員的工作量

(整理自CSDN,http://topic.csdn.net/u/20090611/20/a0532864-3890-4a67-b649-ecbf31d4fc70.html,感謝各位的智慧,學習了)

MFC就是 微軟給你包裝了的庫,提供了很多擴充套件功能,以及高階功能,這樣方便你使用,而不是自己從頭呼叫API來實現
而API由於是MFC下一層,自然實現更靈活,可以根據你的需要來使用,不會被MFC類庫所限制。‍win32和mfc程式設計的最大不同是
win32是程式設計者自己把訊息和響應函式聯絡在一起。
mfc是程式設計者採用微軟為我們做好了MESSAGE-MAP機制,來處理訊息。
--------------
mfc是便利的,為什麼有人不用呢?
不用mfc的人群往往是從DOS時代開始從事視窗程式設計的人,他們早在mfc出世之前就編得一手好程式。
長期的程式設計過程中,每人,每個TEAM都擁有了自己的訊息處理機制程式庫或類庫。
當然有很多人認為他的類庫比mfc使用方便。他開始為視窗程式設計的時候,mfc的TEAM的很多人還在學校裡讀書呢。
--------------
如果不是從那個年代過來的人,還是用mfc吧!
mfc是封裝的類,最後還是會呼叫win32api 
win32api開發效率是底一些,但比較自由. 
有時候mfc是封裝的類不能滿足我們的要求,這時就需要我們自己用api來開發啦 ‍MFC是專注於使用者介面的,而Windows SDK專注於UI, console,Windows服務,嵌入式,驅動多種型別的程式
MFC是一套類庫,適應範圍窄,可以搞ERP軟體,但效率不如其他語言高,而且類庫並沒有對DDK,openGL,D3D等專項領導的函式庫進行封裝。而Windows SDK提供了專題開發的平臺。
MFC中對所有的控制程式碼,物件,訊息都進行了嚴格的檢測,如果你不知道它的內部機制,隨便呼叫函式很容易出錯,而SDK提供的是一種寬鬆的開發環境,你可以用物件導向的思想定義自己的類,對介面控制元件進行封裝。
在一些專題開發專案,你可以不懂MFC,但是在一些常規的軟體開發,你必須熟悉MFC,同時還要懂SDK.‍ win32是windows下的最基本的程式設計方式,使用它得到的程式碼最乾淨最有效率,也是最底層,它是其它所有方式實現的基礎。一般指只使用API和SDK。
MFC是對win32的封裝,使用win32程式設計方法,寫了一個又一個類,讓我們不用再重複大量勞動。但畢竟是封裝,所以不可能完全實現win32所有功能。用著雖然方便,但距離細節畢竟遠了,在個性個、特殊化方面還有差距。

兩者相比,win32更本質,MFC更抽像。從軟體工程來看,MFC更符合要求,更人性化。我們在正常使用中,優先使用MFC
1.MFC的功能正常情況下可以滿足絕大部分的需要,特殊需要,也可以直接用API和SDK實現。但反過來,win32下想用MFC的東西,卻是非常困難的。MFC下開發,是包融了win32.
2.MFC和vc融合,擁有大量人性化的東西,會極大增加開發效率。如介面、通用對話方塊等。而且它的程式碼是微軟寫的,比你自己用win32實現更值得讓公司信賴。而且程式碼量會降低很多,更容易除錯和維護。
3.很多功能你自己實現起來非常麻煩,甚至你的技術沒達到那標準,而使用MFC很簡單,這會迫使你使用它。
有些場合下不要使用MFC:
1.三維遊戲等,這些東東MFC並沒有包含,這時需要使用其它庫。使用MFC反而不好,會造成臃腫和拖累。
2.特殊程式,如病毒等後臺工具。它們根本不需要什麼介面,需要的就是效率,而且要求體積小。這些無疑Win32比MFC強,甚至連win32都可以不用。
3.簡單的實現,win32上簡陋的東西就夠用了,或者就算不夠用,但有STL等C++自帶的,那麼MFC就可以不需要了。win32更符合老程式設計員的習慣。而且如STL,同樣功能下,事實上比MFC更優秀。mfc在d3d,opengl,ddk開發的弊端:
1.MFC是一種封裝類,是個寵然大物。當你使用d3d,opengl等它沒有封裝的進行開發時,使用它完全是種浪費,不需要它為何要掛上它呢?如編d3d時,它本身已經實現了幾乎所有的需求,別再拖個油瓶。
2.MFC不僅是一種封裝類,更是封裝了一種MFC程式設計思想。它具有特有的文件檢視結構和訊息影射。我們在做普通程式時,這些會給我們帶來方便。但做d3d時,程式設計思想又迴歸win32,那樣更直接和有效。這時MFC的程式設計思想和方式就不合適了。特別是DDK,那是跟底層打交道,要短小高效,跟MFC是兩種不同追求風格。
3.事無絕對,選擇合適的也就是最好的,如果你在進行D3D開發時,還要使用MFC的東西也是可以的。如果不是大量使用,可以把MFC中你需要的部份扒開單獨使用。‍ win32指系統環境,MFC是微軟的一個開發平臺。
樓主應該不是想了解win32與MFC的區別吧?因為MFC以前主要就是在win32環境中進行開發的,二者不是一個層面的啊。
可能樓主說的是SDK與MFC吧。一句話,MFC是對SDK的包裝。就像一瓶酒,它就是SDK,然後給這瓶酒加上一個盒子,它就成了MFC。

相關文章