MFC,ATL,WTL的歷史沿襲

需求推動了技術的發展,從MFC到ATL,從ATL再到WTL的發展歷程我想就是一個最好的見證。

早期的VC++開發者們發現了MFC(Microsoft Foundation Classes) 這樣一個好東東。他們發現,MFC提供了一個強大的類庫,很好的滿足了面向對象編程的需要。隨着泛型編程技術的發展和時間的推移,慢慢地,他們慢慢覺得MFC的類庫過於龐大和寬泛,而且它提供的模板庫只覆蓋了很有限的領域。於是,ATL應運而生。

ATL(Active Template Library),簡稱活動模板庫。ATL的設計者們通過它來它提供快速的COM組件封裝。ATL很好地體現了用模板進行編程的思想。如果模板設計得當,就很容易靈活的適應各種不同的需求,而且更容易跟進新技術的發展需求。

但是,作爲泛型編程的愛好者們始終要面對的一個主要難題,那就是如何方便地進行圖形用戶界面(GUI)設計。因爲ATL只是提供了對Win32/64窗口的低級封裝,因此ATL的使用者們在用ATL進行COM開發的同時,不得不藉助於MFC來進行COM組件的UI編程。因爲在GUI方面,ATL確實是愛莫能助。

WTL(Windows Template Library)在體現模板編程思想的同時,對模板進行了很好的高級封裝,很好的滿足了UI編程的各種需求。這也是WTL設計者們的用意所在。在用WTL生成應用程序的時候不需要將DLL文件與EXE文件一起交付給用戶,而且,WTL又有很好的兼容性。你可以將它與ATL, STL, VC++ 數據模板,第三方模板,或者你自己的模板這幾種中的任何一種一起使用。正因爲這些特點,使得當前WTL成爲了大部分高級的C++開發者們進行UI設計時的首選。

從代碼的層面比較WTL與ATL

Win32/64 API 是由一系列C函數構成的集合,它覆蓋了COM和Window編程的大部分領域。ATL是一系列的C++模板集,大部分是爲COM編程服務的。Win32/64 API和ATL都只是提供了對於UI編程的低級支持。如ATL,WTL也是C++模板集,但是它很純粹地集中於對UI編程的高級支持。

如下圖所示,ATL調用Win32/Win64 API ,WTL調用ATL模板和Win32/Win64 API 。


WTL的功能體現和優勢.

WTL當前是第二個版本,第一個是3.1版,第二是7.0版。WTL的功能主要體現在以下幾個方面:

· 提供應用程序框架

· 提供對UI的高級支持

· 封裝Window控件,系統對話框以及GDI對象

它的優勢體現在:

  • 不包含複雜的文檔/視圖框架
  • 具有源於MFC的基本的UI特性
  • 提升了一些MFC的特性(例如,更加靈活的切分窗口)
  • 比靜態鏈接MFC的代碼要小的多
  • 可對WTL進行bug修正,而不影響已存在的應用程序(MFC中如果通過替換MFC/CRT的DLL來修正一個應用程序中的bug,往往會是另一應用程序崩潰)

發佈了26 篇原創文章 · 獲贊 14 · 訪問量 49萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章