MFC和Win32的區別

2021-06-14 13:23:33 字數 2265 閱讀 1474

參考一

(整理自csdn,感謝各位的智慧型,學習了)

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是微軟的乙個開發平台。

可能樓主說的是sdk與mfc吧。一句話,mfc是對sdk的包裝。就像一瓶酒,它就是sdk,然後給這瓶酒加上乙個盒子,它就成了mfc。

參考二

win32控制台 win32工程 MFC工程的區別

空專案 控制台 問2個問題即可。1.控制台 vs win32 mfc?嗯,有不有臉?有臉,選win32或mfc。沒有臉,選控制台。臉就是視窗,就是window.s 這個有臉 這個沒臉 控制台與win32 mfc 互動方式的不同,前者是cml 命令模式 後者是gui 使用者介面 2.mfc vs wi...

MFC程式和Win32程式的關係

首先mfc程式需要下面函式庫 1 windows c runtime函式庫 libc.lib msvcrt.lib msvcrtd.lib 2 dll import函式庫 gdi32.lib user32.lib kernel32.lib 3 mfc函式庫 afx函式庫 mfc42.lib mfc4...

MFC與Win32程式設計的區別與聯絡

樓主 win32和mfc的開發的大概區別知道,我只想知道其主要的方向的區別。兩個都是開發在windows平台上執行的程式,能用mfc開發的,為什麼要用win32api來開發呢,象一些windows上執行的3d引擎,都是用win32 api開發的,所以進行二次開發肯定是用win32 api,但是其他一...