1. 程式人生 > >WTL:下載、安裝、初見

WTL:下載、安裝、初見

rec 6.0 amp img file point 向導 temp bob

簡介

WTL: Windows Template Library

基於ATL對Win32 API的封裝

C++庫,用於開發Windows應用程序和UI組件

WTL功能不如MFC完善,但比MFC更小巧更有效率,不依賴MFC的DLL

MFC支持doc/view架構,而WTL並不支持

WTL不是微軟的正式產品,沒有微軟的官方支持

WTL也實現了CString、CRect、CSize、CPoint等常用的類

   WTL的CStaticT、CButtonT、CListBoxT、CComboBoxT等用起來和MFC版本也沒太大不同。

下載安裝

WTL在VC各版本下的安裝

http://www.cppblog.com/goos/archive/2012/08/16/187424.aspx

WTL7.1下載:http://pan.baidu.com/s/1o8mGGEe

安裝WTL7.1

   運行WTL71.exe,解壓

   技術分享

   運行/WTL71/AppWiz60/setup.js

技術分享

   復制WTL71/include目錄下的頭文件到VC++6.0安裝目錄的 /VC98/Include下。

   運行VC++6.0,根據向導可以輕松的創建ATL/WTL AppWizard工程即可。

新建WTL工程

打開VC++6.0,【File】->【New】

技術分享

技術分享

技術分享

技術分享

在產生的文件中可以看到WTL確實不支持Doc/View。

   WTL對單界面線程的封裝:WTL使用一個_Module全局變量來保存全局數據,並通過它來引用應用程序級的代碼。在WTL中,該變量是CAppModule的實例,對比MFC的theApp。

技術分享

入口函數名為_tWinMain()。當使用UNICODE時,編譯器會將它替換為wWinMain(),否則,為WinMain()。入口函數其實就是主線程(_Module)的起始點,這和SDK,MFC一個道理。一個_Module還維持一個消息循環Map。

   技術分享

該函數創建了一個CMessageLoop實例,該實例包含了這個線程的消息循環。這些消息循環都放在模塊的全局消息循環中,通過線程的ID來索引。這樣,該線程的其它代碼就能訪問得到。每一個應用程序維護一個消息循環隊列Map,應用程序中的每個線程都通過"_Module.AddMessageLoop(&theLoop)",把該線程的消息循環加入到_Module的消息循環Map中。消息循環對象包含了消息過濾和空閑處理。每個線程都可以加入空閑處理代碼和消息過濾。

再看stdafx.h

   技術分享

編譯運行:

技術分享

WTL:下載、安裝、初見