WTL:下載、安裝、初見
簡介
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:下載、安裝、初見