ATL和WTL有什么区别?

use*_*358 9 c++ windows wtl atl

我知道"WTL 建立在 ATL上",但这在实际意义上是什么意思?

ATL在功能方面是WTL的子集吗?(即ATL中的所有功能是否也存在于WTL中?)我注意到维基百科声称ATL的发展状态是"当前",而WTL的最新版本是从2009年中期开始.这是否意味着如果我想使用Glass/Aero和其他Windows 7功能编写Windows 7软件,那么我无法用WTL做到这一点?ATL怎么样?

在ATL和WTL中编写程序是否有任何性能/内存差异?

Rom*_* R. 15

ATL是主要实现COM基础的Microsoft C++库.它的一部分还针对ActiveX控件(这绝对不是整个库的主要目标),它也包括相关的东西,如薄包装纸HWND(CWindow类),字符串处理类CString,CStringA,CStringW,ANSI/Unicode转换等

ATL的一部分分支到CodePlex上托管的开源ATL服务器库.您仍然可以在MSDN上找到一些文档,选择ATL版本回到Visual Studio版本2002/2003/2005.这主要包括Web开发,IIS的东西,还包括正则表达式之类的东西.

WTL最初应该与ATL一起使用,并且涵盖GUI相关方面,例如通用控件上的薄包装器,GDI对象,应用程序GUI框架,框架/视频模型,自定义控件.它CString在ATL开始之前提供了类,这是两个库重叠的事情之一.在WTL开启源代码并且Microsoft提供免费版本的Visual Studio之后,WTL也被更新为在没有ATL的情况下使用,因此使用免费工具构建应用程序可能会有所帮助.


Ham*_*amp 8

是.WTL建立在ATL之上.但是,调用ATL的子集是不正确的.ATL独立作为基于模板的替代MFC方法在Windows操作系统上进行编程.代码膨胀的代价要少得多.除了实际的窗口,对话框等外,ATL几乎处理所有事情.

WTL是MFC窗口模型的替代模板,与ATL提供其他Windows服务的替代方法相同.WTL需要ATL.不是相反.

关于codeproject的Dunn文章提供了一个很好的WTL评论.

MFC程序员的WTL,第一部分 - ATL GUI类是本系列中的第一个.导航链接到系列中的其他文章位于每个文章的底部.