MFC與Win32的區別

文章原址:http://blog.sina.com.cn/s/blog_7656589b01016011.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環境中進行開發的,二者不是一個層面的啊。

MFC是對SDK的包裝。就像一瓶酒,它就是SDK,然後給這瓶酒加上一個盒子,它就成了MFC。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章