MFC六大關鍵技術_第1頁
MFC六大關鍵技術_第2頁
MFC六大關鍵技術_第3頁
MFC六大關鍵技術_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

如有你有幫助,請購買下載,謝謝!如有你有幫助,請購買下載,謝謝!#頁分類:2007-05-1501:241446人閱讀(8)題外話:我并不認為MFC減輕了程序員們的負擔,MFC出現(xiàn)的目的雖然似乎是為了讓程序員不用懂得太多就可以進行視窗編程,但本人在 MFC里徘徊了很久很久(因為那時沒有書本詳細介紹MFC的原理),毫無收獲??赡芘笥褌儠f,怎么一定要了解MFC的具體呢,黑箱”作業(yè)不行嗎?這不是微軟的初衷嗎?不行?。?!如果這樣,我寧愿永遠不選擇MFC!在學電腦之前,本人學習的東西大都與藝術不無關系,小學時參加過全國書畫比賽獲銀獎。兒時的愛好就是在一張紙上隨心所欲地畫畫!MFC“黑箱”就象一幅碩大的抽象畫(抽象到你不能理解),它用鉛筆勾畫好線條,然后請你填顏色。我們怎么能忍受黑箱”作業(yè)?我們選擇C++,就是因為它夠自由,夠藝術,我們可以在此放飛幻想。所以,我們要攻克MFC。偉大孫老師在剖析MFC的時候雖然盡心盡力,但可能由于篇幅所限,說得并不大清楚(我相信許多學員都有這方面的感受)。在此,我突發(fā)奇想,想與大家一同分享一下著名的MFC六大關鍵技術。從什么地方開始講起好呢?我覺得回到最初摸索 MFC的時候,從基本談起最好。因為我知道,一個走過來程序員,總是忘記了當初自己是怎么走過來的,忘記了一個學員最想知道的是什么。一個小小的問題(一兩句話就可以解釋的),足學以令手無寸鐵的學員頭大半個月,所以,我努力回憶當初是怎么讓自己豁然開朗的。轉入正題:MFC的六大關鍵技術包括:MFC程序的初始化過程。運行時類型識別(RTTI)。動態(tài)創(chuàng)建。永久保存。消息映射。消息傳遞。MFC程序的初始化過程1、設計一個簡單完整MFC程序,產生一個窗口。當然這不能讓AppWizard自動為我們生成。我們可以在Win32Application工程下面那樣寫:#ineludevafxwin.h>classMyApp:publicCWinApp{public:BOOLInitInstance()//②程序入點{CFrameWnd*Frame=newCFrameWnd();〃構造框架m_pMainWnd=Frame;//將m_pMainWnd設定為Frame;Frame->Create(NULL,"最簡單的窗口");//建立框架Frame->ShowWindow(SW_SHOW);//顯示框架returntrue;//返回}};MyApptheApp;//①建立應用程序。設定鏈接MFC庫,運行,即可看見一個窗口。從上面,大家可以看到建立一個MFC窗口很容易,只用兩步:一是從CWinApp派生一個應用程序類(這里是MyApp),,然后建立應用程序對象(theApp),就可以產生一個自己需要的窗口(即需要什么樣就在InitInstance()里創(chuàng)建就行了)。整個程序,就改寫一個Initlnstance()函數(shù),創(chuàng)建那么一個對象(theApp),就是一個完整的窗口程序。這就是黑箱”乍業(yè)的魅力?。。?!在我們正想為微軟鼓掌的時候,我們突然覺得心里空蕩蕩的,我們想知道微軟幫我們做了什么事情,而我們想編自己的程序時又需要做什么事情,那怕在上面幾行的程序里面,我們還有不清楚的地方,比如,干嘛有一個 m_pMainWnd指針變量,它從哪里來,又要到哪里去呢?想一想在 DOS下編程是多么美妙的一件事呵,我們需要什么變量,就聲明什么變量,需要什么樣的函數(shù),就編寫什么樣的函數(shù),或者引用函數(shù)庫……但是現(xiàn)在我們怎么辦!??!我們可以逆向思維一下,MFC要達到這種效果,它是怎么做的呢?首先我們要弄明白,VC不是一種語言,它就象我們學c語言的時候的一個類似記事本的編輯器(請原諒我的不貼切的比喻),所以,在VC里面我們用的是C++語言編程,C++才是根本(初學者總是以為VC是一門什么新的什么語言,一門比C++先進很多的復雜語言,汗)。說了那么多,我想用一句簡單的話概括“MFC黑箱'就是幫助我們插入了‘C+代碼的東西”既然MFC黑箱幫我們插入了代碼,那么大家想想它會幫我們插入什么樣的代碼呢?他會幫我們插入求解一元二次方程的代碼嗎?當然不會,所以它插入的實際上是每次編寫窗口程序必須的,通用的代碼。再往下想,什么才是通用的呢?我們每次視窗編程都要寫WinMain()函數(shù),都要有注冊窗口,產生窗口,消息循環(huán),回調函數(shù)……即然每次都要的東西,就讓它們從我們眼前消失,讓MFC幫忙寫入!要知道MFC初始化過程,大家當然可以跟蹤執(zhí)行程序。孫老師的第三課跟蹤了很長一段時間,我相信大家都有點暈頭轉向。本人覺得那怕你理解了 MFC代碼,也很容易讓人找不著北,我們完全不懂的時候,在成千上萬行程序的迷宮中如何能找到出口?我們要換一種方法,不如就來重新編寫個MFC庫吧,嘩!大家不要笑,小心你的大牙,我不是瘋子(雖然瘋子也說自己不瘋)。我們要寫的就是最簡單的 MFC類庫,就是把MFC宏觀上的,理論上的東西寫出來。我們要用最簡化的代碼,簡化到剛好能運行。既然,我們這一節(jié)寫的是MFC程序的初始化過程,上面我們還有了一個可執(zhí)行的MFC程序。程序中只是用了兩個MFC類,一個是CWinApp,另一個是CFrameWnd。當然,還有很多同樣重要MFC類如視圖類,文檔類等等。但在上面的程序可以不用到,所以暫時省去了它(總之是為了簡單)。好,現(xiàn)在開始寫MFC類庫吧 唉,面前又有一個大難題,就是讓大家背一下 MFC層次結構圖。天,那張魚網(wǎng)怎么記得住,但既然我們要理解他,總得知道它是從那里派生出來的吧??紤]到大家都很辛苦,那我們看一下上面兩個類的父子關系 (箭頭代表派生):CObject->CCmdTarget->CWinThread->CWinApp-> 自己的重寫了Initlnstance()的應用程序類。CObject(同上)->CCmdTarget(同上)->CWnd->CFrameWnd看到層次關系圖之后,終于可以開始寫 MFC類庫了。按照上面層次結構,我們可以寫以下六個類(為了

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論