wTL

wTL

WTL 在開發者之間的悄悄傳播已經超過一年了, 傳聞它是基於ATL的,並在微軟內部使用。這理所當然的引起了ATL開發者社區的注意。這些人從ATL1.1開始,就一直為ATL控制項書寫UI代碼,但是他們發現,他們的所寫的代碼常常就是純的Win32 GDI代碼。我告訴您, WTL並沒有多大不同。

基本介紹

  • 外文名:Windows Template Library 
  • 縮寫:WTL
  • 開發人員微軟ATL小組
  • 基於:ATL對Win32API 的封裝
WTL庫,文圖拉,

WTL庫

簡介
WTL 是 Windows Template Library 的縮寫,由微軟的ATL(Active Template Library) 小組開發,主要是基於 ATL 對Win32API 的封裝。從 2.0 後,功能逐步完善,成為了一個完整的支持視窗的框架(windows framework)。
WTL 功能不如MFC完善,但是比 MFC 更小巧,不依賴 MFC 的DLL
WTL 不是微軟的正式產品,沒有微軟的官方支持。
WTL有什麼?
它給各種類型的應用程式提供了一個基本的框架.注意,雖然沒有MFC那樣的文檔/視結構,但是有視(views). 在WTL有大量的代碼來管理視,而且加入自己的代碼也很容易. WTL有AppWizard,可以生成SDI,MDI和多執行緒SDI程式多執行緒SDI跟IE或Windows Explorer很像.它看起來是打開了多個程式實例,實際上這些視窗都是屬於一個進程的).
另外,程式可以是基於對話框的,也可以是基於視的.視可以是基於CWindowImpl的,也可以是基於控制項,甚至是IE里的一個HTML頁.可以選擇程式是否需要一個rebar, command bar (CE-like), toolbar 和/或status bar.另外,程式可以支持ActiveX控制項,以及成為一個COM伺服器.
這裡有幾個關於視的選項. WTL提供splitter視窗類(這樣在一個視里您可以有兩個視窗)和scroll視窗類(這樣您的視窗可以比它顯示的"視"小). WTL也有個類似MFC的UpDateUI的東西,但是它們不是很一樣 - 主要的區別是您需要把需要更新的項用宏映射標註出來,然後您在您的類里加入執行UpdateUI的代碼. DDX/DDV在WTL也支持,同樣類似MFC,但有不同. 必須加一個宏映射來實現DoDataExchange,然後加入調用它的代碼.
現在WTL也有GDI類了.然而,HDC的封裝類就像CWindow一樣,只進行了很簡單的封裝 - 它幾乎沒有加入任何新的功能.不過,在WTL,你可以得到播放meta檔案和OpenGL支持. 最有價值的我猜應該是印表機DC的那些繼承類 - WTL有印表機支持,甚至列印預覽. 當然也有GDI對象的封裝. 諸如畫筆,畫刷,區域等.
WTL對所有的Win32 (和W2K) 通用對話框進行了封裝.同樣儘管簡單,但是它的確使請求字型或者檔案變的非常的簡單.
合成了舊的AtlControls.h,新加了一些封裝類. 這些封裝類封裝了W2K控制項,以及一些不屬於Win32的"控制項",像Command Bar, bitmap button, hyperlink 和 wait cursor.
WTL 最終把訊息分離帶入了ATL! 一些新的MSG映射宏將訊息分離,調用您類里的訊息處理函式.訊息處理函式的參數的值是從訊息分離得到的.唯一令人頭痛的是,您需要查看頭檔案以確定函式參數的意義.
最後,WTL還有一些實用類.最重要的是CString. 不錯,它是從MFC克隆得到的(copy on write),具有(在我知道的範圍內)MFC版本的所有方法.還有查找檔案的API的封裝類,以及CRect, CSize and CPoint.
WTL中沒有什麼?
沒有Document支持
WTL提供了frame和view,但是沒有document。WTL所關注的是用戶界面,而document是不可見的,所以它不是WTL關心的範圍。
沒有Active Document支持
沒有ISAPI支持
沒有WinInet支持
沒有對執行緒和同步進行包裝
沒有資料庫支持
總結
如果打算寫一個Win32 界面程式,我建議您在考慮MFC之前,先試試WTL.使用WTL來寫您的代碼, 程式將變得小巧些,也更有效率些.使用WTL, 還將得到ATL支持COM好處.可以在2000年一月份的平台SDK中找到WTL.在MSI選項頁的Source Code section下.

文圖拉

英文名:Ventura  生日:1948-01-14  現在職務:巴里主教練  慣用腳:右腳  出生地:熱那亞(義大利)  國籍:義大利  代表國家隊:出場0次,進0球  歐洲三大杯:出場0次,進0球  歐洲冠軍聯賽:出場0次,進0球

相關詞條

熱門詞條

聯絡我們