記得當(dāng)初看侯先生的《深入淺出MFC》的時(shí)候,我是有一定的C++基礎(chǔ)的,之前《windows程序設(shè)計(jì)》也看過(guò)大部分,但是對(duì)MFC還是看得非懂似懂。最主要的原因我想是理論并沒(méi)有同實(shí)際結(jié)合,只是看書,自己并沒(méi)有實(shí)際的去編示例程序,結(jié)果就是對(duì)書中所講的沒(méi)有主觀的認(rèn)識(shí),印象也就不深刻了。
我本人在學(xué)校在公司一直做.net的項(xiàng)目,前段時(shí)間在外面接了一個(gè)網(wǎng)絡(luò)監(jiān)控的項(xiàng)目,也就是基于Winpcap的程序,這樣促使我使用VC++。當(dāng)熟悉了Winpcap之后,我發(fā)現(xiàn)我必須要深入MFC了。
雖然網(wǎng)絡(luò)上存在很多的MFC入門之內(nèi)的教程,但是我覺(jué)得每個(gè)人的基礎(chǔ)不一樣所掌握的知識(shí)也不一樣,這就注定每個(gè)人學(xué)習(xí)MFC的過(guò)程是不盡相同。在介紹我學(xué)習(xí)MFC之前,我覺(jué)得我有必要提一下我具備的基礎(chǔ)以及相應(yīng)的學(xué)習(xí)過(guò)程:
1、C++基礎(chǔ)知識(shí)。去年的時(shí)候,從公司回到家(租的地方)就呆在房間沒(méi)有事情干了,就向室友借了一本機(jī)械出版社的《C++程序設(shè)計(jì)》,因?yàn)橹熬陀蠧++基礎(chǔ),這個(gè)只不過(guò)是溫習(xí)一下,不到半個(gè)月就把那本書翻了一遍,書中的練習(xí)也作了一些(呵呵,還好那個(gè)時(shí)候工作不是很忙)。接著就一發(fā)不可收拾了,有很長(zhǎng)一段時(shí)間我都在CSDN的C/C++板塊混,嘗試著回答別人的帖子,遇到自己不明白的或者是模糊的,我會(huì)在網(wǎng)上找資料,查看《C++Primer》,直到這個(gè)知識(shí)點(diǎn)搞懂為止。期間看了《高質(zhì)量C++編程指南》、《C++Primer》,對(duì)內(nèi)存分配、指針、數(shù)組、復(fù)雜的變量聲明、結(jié)構(gòu)體的對(duì)齊方式、參數(shù)傳遞、虛擬函數(shù)等都有了較深刻的認(rèn)識(shí)(見(jiàn)我的msnBlog:http://citywanderer.spaces.msn.com)。
2、英語(yǔ)基礎(chǔ)。在這里為什么要提英語(yǔ)呢,因?yàn)槲覀儽仨氁閙sdn、要在google中搜索源代碼。我是屬于啞巴英語(yǔ)的那種,但由于是在公司的歐美部門,項(xiàng)目相關(guān)的文檔都是英文,所以閱讀英文資料是沒(méi)有什么問(wèn)題的。
3、Windows程序設(shè)計(jì)基礎(chǔ)。MFC只是一個(gè)封裝體,它的本質(zhì)還是windows程序,所以了解windows程序設(shè)計(jì)的基礎(chǔ)是必須的。在網(wǎng)上下載一個(gè)簡(jiǎn)單的windows程序的源代碼(詳見(jiàn)我的《解析windows程序》),? 只要有一個(gè)msdn,加上你的C語(yǔ)言基礎(chǔ)(對(duì),這里并不要C++的知識(shí)),用個(gè)幾天的時(shí)間搞懂這個(gè)windows程序(包括消息機(jī)制、類型,各種結(jié)構(gòu)體……)就OK了。(附加API函數(shù)實(shí)現(xiàn)的源文件目錄:\Microsoft Visual Studio 8\VC\atlmfc\src\)
4、深入淺出MFC。大家可以看看一位大蝦寫的MFC入門教程(http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=1339),把它過(guò)一遍,對(duì)MFC有一個(gè)直觀的認(rèn)識(shí)。OK,看完這個(gè)教程之后,你應(yīng)該明白了MFC的基本框架,等等,這該死的宏DECLARE_MESSAGE_MAP()、BEGIN_MESSAGE_MAP(class,baseclass)……是什么意思啊,要明白它,其實(shí)很簡(jiǎn)單,只有把這些宏全部展開(kāi)了,詳見(jiàn)我的文章《解剖MFC消息宏定義 》,好了如果這個(gè)時(shí)候你能將MFC中的類、方法對(duì)應(yīng)到Windows的簡(jiǎn)單程序中去的話,這說(shuō)明你對(duì)MFC的理解已經(jīng)是差不多了。
再后來(lái),當(dāng)然你要清楚windows的各種消息了,用classWizard、EventWizard添加類和控件的事件,看MFC幫你添加了哪些東西,刪除它們,自己手動(dòng)添加,如果效果和MFC做的一樣,那就恭喜你了(我們要知道這種wizard只是幫助我們減少開(kāi)發(fā)時(shí)間的工具而已,我們只有明白了它們的本質(zhì),才能理直氣壯地用它們,不然,你肯定會(huì)心虛的!)
再后來(lái)……哪里有這么多再后來(lái)!我也是才學(xué)到這里而已啦。
希望能給各位初學(xué)MFC的看官一點(diǎn)幫助,我可能有些地方漏掉了,大家也可以回帖詢問(wèn),我必定知而必言。