ATL/CLR/MFC/Win32

 

ATL/CLR/MFC/Win32

 

MFC、ATL和CLR是VC2005內置的3大庫,涵蓋了windows的各種開發方法和開發應用。當然關於C++開發的庫不止這3個,不過這3個是微軟推薦。從編程所處層次而言,WIN32爲最底層,其次是MFC.然後是CLR.

==============================

WIN32 winAPI

MFC MFC類庫

CLR .net庫

==============================

1. WIN32常規就是不用MFC,使用API函數編的程序。

2. MFC庫有很多年的歷史了,MFC是基於Windows API 的簡單封裝。其核心架構基於"Document/View"架構(20年前被認爲很潮流的一種概念)和消息流動機制。這個庫自從VC6開始到現在都沒有多大改動。MFC封裝的範圍包括GUI,IO,數據庫,網絡編程等等方面。但是很多系統開發必須的api都沒有封裝,這樣開發者一般都在MFC的基礎上自己處理與業務相關的任務。事實上很多人用MFC只是利用其GUI部分的封裝。這個庫GUI處理的效率也並不是很高,有時候與UI處理相關的代碼會佔到整個項目的一半甚至更多。總的來說,這是一個垂老的庫,微軟在10年以來,除了對MFC進行修修補補以外,沒有進行大的改進或者更新。如果你問MFC還會活多久?恩,這是個問題。如果有一天MFC不在了,微軟在這個級別上並沒有其他產品能夠代替它。

3. CLR庫是隨着.Net Framework 2 和VS2005一起發佈的庫,其核心的實現和C#,VB.net 一樣。都是基於公共語言運行庫。.Net Framework封裝了大量系統的api,以類庫的形式提供給開發者。C++中的CLR庫可以使用其中和本機代碼有關的部分,目前C++還不能涉及到asp.net部分。CLR庫中的C++顛覆了很多標準C++的傳統,甚至可以說,這裏的C++不是C++,只是披着C++的皮幹其他的事。這裏的C++更像是C#或者類似的語言。所以這裏不叫C++,而叫做C++/CLI,值得一提的是,有關C++/CLI的部分目前還沒有被標準C++接受,最近微軟有關C++/CLI標準化的提案被C++標準化委員會拒絕了。所以C++/CLI目前還是微軟的一家之言。

4. ATL用於編寫COM程序。ATL庫貌似也年紀很大了,至少在我接觸到VC的時候就有它的存在了。這個庫可以追溯到COM組件,因爲ATL的目的就是幫助開發者更好的與COM交互。到底什麼時候有COM這個東西的 ?我也不知道,我只知道COM是有16位版本的,在Windows升級到32位的時候COM也隨着升級到了32位。COM就像一些封裝好的類對象一樣,通過封裝系統的api,提供一些標準的方法來給你使用。所以系統中有什麼組件,就可以在ATL中用什麼方法 。所以ATL不止可以寫ActiveX,也可以有window,也可以有其它。有時候有些微軟發佈的功能是隻以COM組件的形式發佈的,例如MSXML,這時候MFC就不適合,是要ATL來處理的。但是ATL在處理UI這方面並不是很強,所以微軟工程師有一個開源的UI 框架,叫做WTL,專門用來處理UI的。ATL庫的缺點是,作爲模板庫,在出現錯誤的時候會比較麻煩,出錯提示會牛頭不對馬嘴。

 

另外VC可以使用的C/C++類庫

Windows API

標準C++庫

CRT

MFC

CLI

新建項目時:

WIN32 是本機程序 一般是調用WINDOWS API

MFC 是封裝了WINDOWS API 的C++類,開發效率要高些

CLR是就是。NET平臺,相當於一個虛擬機,官方稱爲託管代碼,挺像JAVA的

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