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