C++種類:WIN32、MFC、ATL及CLR

來源:互聯網
上載者:User

從編程所處層次而言,WIN32為最底層,其次是MFC.然後是ATL,最後是CLR.

1.        WIN32常規就是不用MFC,使用API函數編的程式;可調用Win32 WinAPI;

  1)  Win32 Application

  2)  Win32 Console Application

   3)  Win32 Dynamic-Link Library

  4)  Win32 Static Library

 

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

  1)  MFC AppWizard (exe)

  2)  MFC AppWizard (dll)

  3)  MFC ActiveX ControlWizard

 

3.  ATL,Active Template LibraryActive Template Library,是一種微軟程式庫,支援利用C++語言編寫ASP代碼以及其它ActiveX程式。通過Active Template Library,可以建立COM組件,然後 通過ASP頁面中的指令碼對COM對象進行調用。這種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庫的缺點是,作為模板庫,在出現錯誤的時候會比較麻煩,出錯提示會牛頭不對馬嘴;可調用COM對象; 

  1)  可執行檔(exe)
  2)  動態連結程式庫(dll)
  3)  服務(exe)

 

4.        CLR庫是隨著.Net Framework 2.0一起發布的庫,其核心的實現和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目前還是微軟的一家之言。

從編程所處層次而言,WIN32為最底層,其次是MFC.然後是ATL,最後是CLR.

1.        WIN32常規就是不用MFC,使用API函數編的程式;可調用Win32 WinAPI;

  1)  Win32 Application

  2)  Win32 Console Application

   3)  Win32 Dynamic-Link Library

  4)  Win32 Static Library

 

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

  1)  MFC AppWizard (exe)

  2)  MFC AppWizard (dll)

  3)  MFC ActiveX ControlWizard

 

3.  ATL,Active Template LibraryActive Template Library,是一種微軟程式庫,支援利用C++語言編寫ASP代碼以及其它ActiveX程式。通過Active Template Library,可以建立COM組件,然後 通過ASP頁面中的指令碼對COM對象進行調用。這種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庫的缺點是,作為模板庫,在出現錯誤的時候會比較麻煩,出錯提示會牛頭不對馬嘴;可調用COM對象; 

  1)  可執行檔(exe)
  2)  動態連結程式庫(dll)
  3)  服務(exe)

 

4.        CLR庫是隨著.Net Framework 2.0一起發布的庫,其核心的實現和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目前還是微軟的一家之言。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.