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

2022-04-11 10:26:49 字數 2987 閱讀 1389

兩個都是開發在windows平台上執行的程式,能用mfc開發的,為什麼要用win32api來開發呢,象一些windows上執行的3d引擎,都是用win32 api開發的,所以進行二次開發肯定是用win32 api,但是其他一些ms系統好像沒有必要用api,用mfc就可以了,反正編譯出來的exe都是可以執行的。

#4樓mfc是封裝的類,最後還是會呼叫win32api win32api開發效率是底一些,但比較自由. 有時候mfc是封裝的類不能滿足我們的要求,這時就需要我們自己用api來開發啦

#6樓win32和mfc程式設計的最大不同是

win32是程式設計者自己把訊息和響應函式聯絡在一起。

mfc是程式設計者採用微軟做好了的message-map機制,來處理訊息。

--------------

mfc是便利的,為什麼有人不用呢?

不用mfc的人群往往是從dos時代開始從事視窗程式設計的人,他們早在mfc出世之前就編得一手好程式。

長期的程式設計過程中,每人,每個team都擁有了自己的訊息處理機制程式庫或類庫。

當然有很多人認為他的類庫比mfc使用方便。他們開始為視窗程式設計的時候,mfc的team裡的很多人還在學校裡讀書呢。

--------------

如果不是從那個年代過來的人,還是用mfc吧!

(瞎掰)

#14樓

mfc是專注於使用者介面的,而windows sdk專注於ui, console,windows服務,嵌入式,驅動多種型別的程式.

mfc是一套類庫,適應範圍窄,可以搞erp軟體,但效率不如其他語言高,而且類庫並沒有對ddk,opengl,d3d等專項領導的函式庫進行封裝。而windows sdk提供了專題開發的平台。

mfc中對所有的控制代碼,物件,訊息都進行了嚴格的檢測,如果你不知道它的內部機制,隨便呼叫函式很容易出錯,而sdk提供的是一種寬鬆的開發環境,你可以用物件導向的思想定義自己的類,對介面控制項進行封裝。

在一些專題開發專案,你可以不懂mfc,但是在一些常規的軟體開發,你必須熟悉mfc,同時還要懂sdk.

#17樓

不要把sdk(win32)和mfc當成兩件事。。。。。

不使用mfc並不等於不使用類喲!

本人是從sdk起步進入視窗設計的,但現在所有的新專案如果我能決定的我都用mfc的框架。

以前移植很多美國的軟體,當時mfc的地位還比較低,大部分工程都是sdk(win32)的。

每做乙個移植,就得解讀帶著強烈個性的類群,很痛苦。

現在的移植工作就輕鬆多了,因為大家大多都用mfc了。

除非你個人(你的公司)有一套你(你的公司)自己積累起來的類庫,不然的話,不要對mfc有負面的評價,盡可能使用它。

另外,mfc的達人一定是sdk(win32)的達人。

只會mfc而不懂sdk(win32)的程式設計師幾乎沒有,當然初學者不計其中。

在使用mfc的同時,還要過載/派生它,以滿足我們的要求。如果不懂sdk(win32),就無法做到這一點。

#27樓

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更優秀

#37樓

mfc在d3d,opengl,ddk開發的弊端:

1.mfc是一種封裝類,是個寵然大物。當你使用d3d,opengl等沒有被封裝的進行開發時,使用它完全是種浪費,不需要它為何要掛上它呢?如編d3d時,它本身已經實現了幾乎所有的需求,不用再拖個油瓶。

2.mfc不僅是一種封裝類,更是封裝了一種mfc程式設計思想。它具有特有的文件檢視結構和訊息影射。我們在做普通程式時,這些會給我們帶來方便。但做d3d時,程式設計思想又回歸win32,那樣更直接和有效。這時mfc的程式設計思想和方式就不合適了。特別是ddk,那是跟底層打交道,要短小高效,跟mfc是兩種不同追求風格。

3.事無絕對,選擇合適的也就是最好的,如果你在進行d3d開發時,還要使用mfc的東西也是可以的。如果不是大量使用,可以把mfc中你需要的部份扒開單獨使用。

#45樓

sdk 程式設計需要自己建立訊息處理機制!mfc是直接做訊息對映

mfc 是對 sdk 的更高一層的封裝,使用起來肯定要方便了,要不封裝了幹嗎!

如果一般應用,mfc 很好

#49樓

win32指系統環境,mfc是微軟的乙個開發平台。

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

這是我在搜尋此問題時看到的,經過整理,只對一些覺得彆扭的地方做了小修改.

現在高版本的vs都有mfc和win32兩種選擇,#49樓說的不知道是怎麼回事,可能是在說vc6.0吧。

更多樓層詳情,請看

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

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

MFC和Win32的區別

參考一 整理自csdn,感謝各位的智慧型,學習了 mfc就是 微軟給你包裝了的庫,提供了很多擴充套件功能,以及高階功能,這樣方便你使用,而不是自己從頭呼叫api來實現 而api由於是mfc下一層,自然實現更靈活,可以根據你的需要來使用,不會被mfc類庫所限制。win32和mfc程式設計的最大不同是 ...

Win32程式設計

win32 malloc函式的底層實現是win32api utf 16編碼以16位無符號整數為單位,注意是16位為乙個單位,不是乙個字元就只有16位,這個要看字元的unicode編碼處於什麼範圍而定,有可能是2個位元組,也可能是4個位元組現在機器上的unicode編碼一般就是指utf 16 以兩個位...