c++ - ATL 和 WTL 有什么区别?

标签 c++ windows atl wtl

我知道“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/

相关文章:

c++ - 初始化 auto-inc 类型 vector 的 vector 时出现问题

c++ - 是否需要将空指针分配给 std::auto_ptr

c - 如何从程序返回进度值

python - 如何在 Python 中制作 alt+number 全局热键?

c++ - 确认注册的 COM 对象 CoCreateInstance 返回 REGDB_E_CLASSNOTREG

c++ - 使用不完整类型显式实例化函数模板

c++ - regex_search 只选择匹配的最大子串。还要在 regex_search 中键入不匹配

c++ - 在 Windows 中安装最新的 cppunit

c++ - 如何使用 CWindowImpl 类创建新窗口

visual-studio-2008 - 如果我切换到 ATL,还需要调用 CoInitialize(NULL) 和 CoUninitialize() 吗?