轉載:http://blog.163.com/jackie_howe/blog/static/199491347201242011203225/程序員
C語言是一種古老而又經久不衰的計算機程序設計語言,大約誕生於上個世紀60年代。因爲它的設計有不少優勢,多年以來深受廣大程序設計人員的喜好,並逐漸 淘汰了不少其它程序設計語言。咱們平時使用的大多數軟件都是用C語言開發的。不少後來出現的一些語言也沿用了不少它的東西。C語言的編程方式是一種稱爲面向過程的開發方式。也就是說,解決問題的時候,程序員須要思考計算機應該如何一步一步完成這個問題,而後將相應過程轉化爲代碼。 web
當軟件變得愈來愈複雜,代碼愈來愈長的時候,一我的的腦力有限,用面向過程的方法很難開發,每每寫着後面的,就忘了前面寫 了什麼了。並且複雜軟件每每須要不少人協同開發,更加大了開發難度。一種稱爲面向對象的軟件開發方法應運而生。面向對象的思想用幾句話很難說清楚。國內的 計算機教材在講到這裏的時候每每也都說不清楚什麼叫面向對象。這個詞語也許只能意會不能言傳吧。須要開發過一些相關軟件才能領會。這裏仍是不具體說了吧。 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 的任何東西。windows
不少人急功近利,以爲花費半年甚至一年時間學習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。