我知道“WTL 建立在 ATL”,但这在实际中意味着什么?
就功能而言,ATL 是 WTL 的子集吗? (即 ATL 中的所有功能是否也存在于 WTL 中?)我注意到维基百科指出 ATL 的开发状态是“当前”,而 WTL 的最新版本是从 2009 年年中开始的。这是否意味着如果我想使用 Glass/Aero 和其他 Windows 7 功能编写 Windows 7 软件,那么我不能使用 WTL 来完成? ATL 呢?
用 ATL 和 WTL 编写程序在性能/内存方面有什么不同吗?
最佳答案
ATL 是主要实现 COM 基础的 Microsoft C++ 库。它的一部分还针对 ActiveX 控件(这绝对不是整个库的主要目标),它还涵盖了相关内容,例如 HWND
的薄包装器(CWindow
类), 字符串操作类CString
, CStringA
, CStringW
, ANSI/Unicode转换等
ATL 的一部分被分支为开源 ATL Server托管在 CodePlex 上的库。您仍然可以在 MSDN 上找到它的一些文档,选择 ATL 版本回到 Visual Studio 版本 2002/2003/2005。这主要涵盖 Web 开发、IIS 内容,还包括正则表达式等内容。
WTL 最初应该与 ATL 一起使用,涵盖了 GUI 相关方面,例如通用控件的薄包装、GDI 对象、应用程序 GUI 框架、帧/视频模型、自定义控件。它在 ATL 开始这样做之前提供了 CString
类,这是两个库重叠的地方之一。在 WTL 开源并且微软提供了免费版的 Visual Studio 之后,WTL 也被更新为可以在没有 ATL 的情况下使用,这样有助于使用仅免费的工具构建应用程序。
关于c++ - ATL 和 WTL 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7816409/