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
编译运行: