简介
WTL
在开发者之间的悄悄传播已经超过一年了
,
传闻它是基于
ATL
的
,
并在微软内部使用
.
这理所当然的引
起了
ATL
开发者社区的主意
.
这些人从
ATL1.1
开始
,
就一直为
ATL
控件书写
UI
代码
,
但是他们发现
,
他们的所
写的代码常常就是纯的
Win32 GDI
代码
.
我告诉您
, WTL
并没有多大不同
.
是不是让人失望
?
不
,
因为
ATL
只是对
COM
进行了简单的封装
,
这也是
ATL
的强大之处
.
是的
,
写
ATL
您必须
通晓
COM.
您在
ATL
上额外花费的功夫跟您学习
COM
所作的努力比起来
,
简直微不足道
.
这跟那些需要把主
要精力花费在学习类库本身
,
忽略
COM
的库是完全不同的
.
WTL
与此类似
.
您需要懂得
Win32
窗口技术和
GDI.
只要您懂得
,
学习
WTL
就似清风抚面
,
再简单不过了
.
如果
您不懂
这些
,
那么您最好使用
VB
来写
UI
代码
.
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.