如何學習mfc

2021-06-18 10:29:17 字數 1888 閱讀 3449

mfc就是microsoft foundation classes

微軟基礎類庫的簡稱,用於開發windows軟體的,很多人學習了c或是c++之後,要準備放棄黑白屏的字元的程式,準備開發擁有視窗介面的程式,那麼是使用c語言還是c++,或者說使用sdk還是使用mfc進行開發的問題,擺在了大家面前,另外,應該如何學習mfc的問題,也擺在了面前,因為mfc底層相當複雜,而且相對隱蔽,我們學起來,常常摸不著頭腦。今天,我根據我的經驗,談談這些問題。

首先,如果我們是使用c語言,那麼我們就使用sdk來開發,這種開發就是直接呼叫api函式的開發,也是我們常常聽說的,使用面向過程的開發方式,使用sdk的開發方式,工作量比較大,因為幾乎所有的**都要我們自己編寫,而且由於是面向過程的,當**過多之後,維護起來相當困難,程式邏輯也更加複雜。如果我們是使用c++語言來開發,那麼我們就要用到mfc,mfc是面物件的編寫方式,因為每個模組可以用物件的方式來管理,因此,我們只要抓住了各個物件,以物件為基本點,我們維護起來更加容易,程式結構更加清晰,而且大部分**在mfc的類庫中,微軟已經為我們寫好了。所以我們在沒有特殊要求的情況下,我們就可以直接用,如果我們要對建立的物件有特殊的要求,我們可以通過重寫虛函式,攔截一些訊息,並處理的方法來實現。那麼sdk和mfc有什麼聯絡嗎,可以說是相互離不開。為什麼呢,這就要說到mfc的由來,mfc其實是sdk的封裝,也許說這個你不知道,但是我說,c++就是c的封裝,也許你就明白了,在c的封裝的基礎之上,引入了類,物件的概念,從而有了類的繼承,多型性等概念,其實底層完全就是c的執行,那麼sdk和mfc的關係也是這樣,mfc的底層其實就是sdk,只是再次基礎上,搭建了乙個框架,也就是mfc,在這個框架之上,我們來進行開發,所以說,要學明白,就要學明白sdk,也許你不用精通sdk,但是你要會sdk。為什麼呢,一方面,mfc不能完全完成我們需要的任務,雖然它對大部分sdk進行了封裝,但是有的也沒有的,這時候,我們就要我們直接呼叫sdk函式,例如,在我們自定義的類中,我們肯定要用到sdk,另一方面,我們可以更加靈活的使用mfc,有時候不用受框架的限制,或者說可以巧用mfc。舉個例子吧,對於私有訊息,或者有些訊息,mfc的訊息對映當中,並沒有這個,mfc的對映訊息,一般都是針對視窗訊息,有的訊息,如ime的訊息,就沒有,那麼我們應該如何處理呢,對於私有訊息,mfc為我們準備了乙個巨集onmessage,那麼像我說的ime的訊息,如何弄呢,其實這個時候,我們就可以重寫虛函式,windowproc,在這個虛函式的編寫過程,就和sdk的編寫訊息處理的過程是完全一樣的,使用switch,case語句,就可以搞定了。所以,mfc和sdk,沒有可選性,sdk是基礎,mfc是目標。我想現在大家應該明白了。

我想初學mfc的人,應該也看了幾本書了,但是自己進入mfc以後,不說mfc底層,就是通過嚮導生成的很多函式,巨集,執行結構,自己也看不明白是什麼,我看過一本好像叫《vc++2010權威開發指南》的書,這本書有800頁左右,16開的哦,也沒有把mfc的結構和原理說明白,它的主要內容是一些基本編寫方法,如選單,按鈕,簡單圖形程式設計。每個部分都說的十分的簡單的情況下,就用了800頁,因此,我要在次說的是,學習mfc,我們不能追求靠幾本中文就把mfc學會了的,那麼我要說的就是,學習軟體開發的程式編寫,我們必須要實現以msdn為主,中文參考書為輔的思想。要學會使用msdn,才能從根本上解決學習sdk和mfc程式設計的問題。在後面的文章中,我會談談如何使用msdn。

接著,我再談談學習路線,首先呢,我們不要急於寫出什麼功能的程式,我們應該主要攻擊windows的程式執行的機制,例如,我們編寫乙個視窗,就有設計視窗,註冊視窗,建立視窗,訊息迴圈,視窗過程。這是乙個最簡單windows程式的基本結構,把它弄清楚,不管是sdk還是mfc,你就可以打下了很好的基礎。有了這個基礎,對於建立諸如按鈕,編輯框,列表框等控制項,都可以自己搞定,不要誰教你。接著,你可以學習有關執行緒和程序的知識,繪圖與繪畫(painting and drawing),com(元件物件模型)等,

最後,提醒大家,學習不要急躁,從最簡單的入手,循序漸進,冰凍三尺非一日之寒。你想要的,都在msdn。

MFC是否過時?如何學習MFC?

mfc是否過時?如何學習mfc?發表於 2010年05月31日 由 admin 過時與否?簡單回答就是 沒有過時。是否需要學習mfc?簡單答之 depends on。學習mfc最好的書籍?是這本 vc 技術內幕 另外深入一點可以看 深入淺出mfc 侯捷 為何沒有過時?很簡單,微軟一直在更新mfc,如...

MFC學習 MFC入門

mfc 原作者姓名 zhoujiamurong include afxwin.h class sample public cframewnd class public public0,initinstance中呼叫 initinstance中呼叫 mb ok sample s new sample ...

MFC學習 MFC入門 二

mfc 訊息 對映 原作者姓名 zhojiamurong include afxwin.h 定義sample繼承mfc中的cframewnd類,該類代表了窗體框架 class sample public cframewnd 新增訊息處理函式 左鍵按下事件的方法 void onlbuttondown ...