C語言,C++,VC++,MFC之間的區別和聯繫

轉載:http://blog.163.com/jackie_howe/blog/static/199491347201242011203225/
C語言是一種古老而又經久不衰的計算機程序設計語言,大約誕生於上個世紀60年代。由於它的設計有很多優點,多年以來深受廣大程序設計人員的喜愛,並逐漸淘汰了很多其它程序設計語言。我們平時使用的大多數軟件都是用C語言開發的。很多後來出現的一些語言也沿用了很多它的東西。C語言的編程方式是一種稱爲面向過程的開發方式。也就是說,解決問題的時候,程序員需要思考計算機應該如何一步一步完成這個問題,然後將相應過程轉化爲代碼。

當軟件變得越來越複雜,代碼越來越長的時候,一個人的腦力有限,用面向過程的方法很難開發,往往寫着後面的,就忘了前面寫 了什麼了。而且複雜軟件往往需要很多人協同開發,更加大了開發難度。一種稱爲面向對象的軟件開發方法應運而生。面向對象的思想用幾句話很難說清楚。國內的 計算機教材在講到這裏的時候往往也都說不清楚什麼叫面向對象。這個詞語也許只能意會不能言傳吧。需要開發過一些相關軟件才能領會。這裏還是不具體說了吧。 C語言不是面向對象的,而程序員又離不開C語言,因此有人在C語言的基礎上添加了面向對象的功能,就是C++.同時,C++修改了C語言中一些不方便的規定,使C語言用起來更方便了。這裏需要注意:

C++是在C語言的基礎上發展來的,但是並不是C++比C語言高級,兩者的編程思想不一樣,應用的領域也不一樣。在各自的領域,誰也不能替代誰。而且,windows操作系統出現以後,開發windows平臺的圖形界面程序成爲一大難題。用C語言雖然能開發,但是程序員要花費很大的精力處理圖形界面。同時,windows平臺圖形界面的程序又都有很多相似點。爲了解放程序員,讓他們把精力主要放在程序功能上,而不是放在圖形界面上,microsoft公司推出了visual系列軟件開發環境,包括爲C++程序員提供的Visual C++.程序員能用C++語言在其上開發圖形界面的軟件。微軟隨Visual C++提供了很多用於顯示Windows界面的庫函數。可以說Visual C++就是C++加上windows圖形界面。

那是不是想學C++和C語言的話,只要去學Visual C++就行了呢?大錯特錯!市面上任何一本Visual C++教材都是假設用戶已經掌握了C++語言,重點在講和Windows程序設計相關的東西,而且往往都要講MFC.沒有C++基礎,根本無法理解MFC 的任何東西。

很多人急功近利,覺得花費半年甚至一年時間學習C++.連個圖形界面的程序都開發不出來,太不划算。這種想法也是錯誤的。世界上的軟件只有一部分具有圖形 界面,運行在Windows平臺,需要用Visual C++開發。學好了C++,即使不學Visual C++,也是大有作爲的。

還有很多人,要學C++或者C語言,先整個Visual C++裝上。其實這是一種誤區。C++是一門編程語言,而VC只是一個IDE,是一個工具。C++是與平臺無關的,VC只能在Windows跑,學習VC,更多是學Windows編程。我們學習應該先學編程語言,然後再具體的學習與平臺相關的東西。把東西都放在一起來學,保證亂!Visual C++操作複雜,而且幫助開發者做了很多事情。對於初學者來說,操作複雜的話要花很多時間用在掌握Visual C++的用法上。幫開發者做的那些事情,往往是初學者需要了解的,自己親手做一下,對學習更有好處。

C++、VC++、MFC這三都到底有什麼區別和聯繫呀?

C++是純粹的編程語言;VC++是編程環境,即平常所說的IDE(即Integrated Development Environment,是“集成開發環境”的英文縮寫);MFC是隨微軟VC++ 開發工具宣佈的類庫。詳細說:MFC,微軟基本類(Microsoft Foundation Classes),實際上是微軟供給的用於在C++環境下編寫應用程序的一個框架和引擎;VC++是WinDOS下開發人員使用的專業C++ SDK(SDK,Standard SoftWare Develop Kit,專業軟件開發平臺),MFC就是掛在它之上的一個幫助軟件開發包。MFC作爲與VC++血肉相連的部分(注意C++和VC++的區別:C++是一種程序設計語言,是一種大家都承認的軟件編制的通用規範,而VC++只是一個編譯器,或者說是一種“編譯器 +源程序編輯器”的IDE,這跟Pascal和Delphi的關係是一個道理:Pascal是Delphi的語言基本,Delphi使用Pascal規範來進行Win下應用程序的開發和編譯。但不同於Basic語言和VB的關係:Basic語言在VB開發出來被應用的年代已經成了Basic語言的新規範,VB新加的Basic語言要素,如面向對象程序設計的要素,是一種性質上的飛躍,使VB既是一個IDE,又成長成一個新的程序設計語言),MFC同Borland C++集成的VCL一樣,是一個非外掛式的軟件包、類庫,只不過MFC類是微軟爲VC++專配的罷了。

MFC是Win API與C++的結合。API,即微軟供給的WinDOS下應用程序的編程語言接口,是一種軟件編程的規範,但本身不是一種程序開發語言,可以允許用戶使用各種各樣的第三方(如我是一方,微軟是一方,Borland就是第三方)的編程語言來進行對WinDOS下應用程序的開發,使這些被開發出來的應用程序能在WinDOS下運行。比如VB,VC++,Java,Dehpi編程語言函數實質上全部源於API,因此用它們開發出來的應用程序都能工作在WinOS的消息機制和繪圖裏,遵守WinDOS作爲一個操作系統的內部實現。這其實也是一種必要,微軟如果不供給API,這個世上對Win編程的工作就不會存在,微軟的產品就會迅速從時尚變成垃圾,上面說到MFC是微軟對API函數的專用C++封裝,這種結合一方面讓用戶使用微軟的專業C++ SDK來進行Win下應用程序的開發變得容易,因爲MFC是對API的封裝,微軟做了大量的工作,暗藏了好多程序開發人員在Win下用C++ & MFC編制軟件時的大量內節,如應用程序實現消息的處理,設備環境繪圖,這種結合是以便利爲目的的,必定要付出一定代價(這是微軟的一向作風),因此就造成了MFC對類封裝中的一定程度的的冗餘和迂迴,但這是可以接受的。

最後要明白MFC不只是一個功效單純的界面開發系統。它供給的類絕大部分用來進行界面開發,關聯一個窗口的動作,但它供給的類中有好多類不與一個窗口關聯,即類的作用不是一個界面類,不實現對一個窗口對象的把持(如創建、銷燬),而是一些在WinDOS(用MFC編寫的程序絕大部分都在WinDOS中運行)中實現內部處理的類,如數據庫的管理類等。學習中最應花費時間的是消息和設備環境,對C++和MFC的學習中最難的部分是指針,C++面向對像程序設計的其它部分,如數據類型、流程把持都不難。建議學習數據結構C++版。

MFC是微軟封裝了的API。什麼意思呀?windows作爲一個供給功效強大的應用程序接口編程的操作系統,的確便利了許多程序員,傳統的win32開發(直接使用windows的接口函數API)對於程序員來說非常的困難,因爲,API函數實在太多了,而且名稱很亂,從零構架一個窗口動輒就是上百行的代碼。MFC是面向對象程序設計與Application framework的完美結合,他將傳統的API進行了分類封裝,並且爲你創建了程序的一般框架。MFC是對WindowsAPI的封裝,大大簡化了我們的工作;學VC主要就是要學MFC,大約有100多個類,但常用的也就二三十個。應該象背4級單詞一樣將這些常用類搞懂;當然不要死記,要通過看輔助、看例子、動手練習來學會它們;而且,並非每個類的內部的所有函數都要學會,要日積月累。如果真的想成爲高手,做個筆記本把自己認爲重要的類、函數記下來,隨時學習,也是很好的突擊方式。

有趣的是,MFC使用“Afx”作爲所有的全局函數的前綴,“afx”作爲全局變量的前綴。因爲在MFC的早期開發階段它叫“Application Framework Extensions”縮寫爲“AFX”。AFX供給了對Windows API的高度抽象,建立了全新的面向對象的AFX API,但它對於新手來說太龐雜了,所以AFX小組不得不重新開始。後來他們創建了一組C++類,這就是MFC。MFC這個名字被採用得太晚了以至於沒來得及修改這些引用。

重要的MFC:

CWnd:窗口,它是大多數“看得見的東西”的父類(Windows裏幾乎所有看得見的東西都是一個窗口,大窗口裏有許多小窗口),比如視圖CView、框架窗口CFrameWnd、工具條CToolBar、對話框CDialog、按鈕CButton,etc;一個例外是菜單(CMenu)不是從窗口派生的。該類很大,一開始也不必學,知道就行了。

CDocument文檔,負責內存數據與磁盤的交互。最重要的是OnOpenDocument(讀入),OnSaveDocument(寫盤),Serialize(讀寫)。

CView視圖,負責內存數據與用戶的交互。包含數據的顯示、用戶操作的響應(如菜單的選取、鼠標的響應)。最重要的是OnDraw(重畫窗口),通常用CWnd::Invalidate()來啓動它。另外,它通過消息映射表處理菜單、工具條、快捷鍵和其他用戶消息。你自己的許多功效都要加在裏面,你打交道最多的就是它。

CDC設備文本。無論是顯示器還是打印機,都是畫圖給用戶看。這圖就抽象爲CDC。CDC與其他GDI(圖形設備接口)一起,完成文字和圖形、圖像的顯示工作。把CDC想象成一張紙,每個窗口都有一個CDC相聯繫,負責畫窗口。CDC有個常用子類CClientDC(窗口客戶區),畫圖通常通過CClientDC完成。

CDialog對話框

CWinApp應用程序類。似於C中的main函數,是程序執行的入口和管理者,負責程序建立、消滅,主窗口和文檔模板的建立。最常用函數InitInstance():初始化。

CGdiObject及子類,用於向設備文本畫圖。它們都需要在使用前選進DC。

CPen筆,畫線

CBrush刷子,填充

CFont字體,把持文字輸出的字體

CBitmap位圖

CPalette調色板

CRgn區域,指定一塊區域可以用於做特殊處理。

CFile文件。最重要的不外是Open(打開),Read(讀入),Write(寫)

CString字符串。封裝了C中的字符數組,非常實用。

CPoint點,就是(x,y)對

CRect矩形,就是(left,top,right,bottom)

CSize大小,就是(cx,cy)對(寬、高)MFC是在1992年的Microsoft 16位版的C/C++編譯器的7.0版本中作爲一個擴展輕量級的Windows API面向對象的C++封裝庫而引入的。此時,C++因爲它在和API方面的卓越表現,剛剛開始被用來取代C應用於開發商用軟件。因此,他們推出了替代早期的老式的字符界面的集成開發環境(IDE)的PWB。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章