【问题标题】:What is the difference between ATL and WTL?ATL 和 WTL 有什么区别?
【发布时间】:2011-12-10 14:41:34
【问题描述】:

我知道“WTL 建立在 ATL之上”,但这实际上意味着什么?

就功能而言,ATL 是 WTL 的子集吗? (即 ATL 中的所有功能是否也存在于 WTL 中?)我注意到 Wikipedia 指出 ATL 的开发状态是“当前”,而 WTL 的最新版本是从 2009 年年中开始的。这是否意味着如果我想使用 Glass/Aero 和其他 Windows 7 功能编写 Windows 7 软件,那么我不能使用 WTL 来完成它? ATL 呢?

在 ATL 和 WTL 中编写程序有性能/内存差异吗?

【问题讨论】:

    标签: c++ windows atl wtl


    【解决方案1】:

    ATL 是 Microsoft C++ 库,主要实现 COM 基础。它的一部分还针对 ActiveX 控件(这绝对不是整个库的主要目标),它还涵盖了相关的东西,例如 HWND(CWindow 类)的瘦包装,字符串操作类 CString,@ 987654325@、CStringW、ANSI/Unicode转换等

    ATL 的一部分被分支到 CodePlex 上托管的开源 ATL Server 库中。您仍然可以在 MSDN 上找到一些文档,将 ATL 版本选择回 Visual Studio 版本 2002/2003/2005。这主要涵盖 Web 开发、IIS 内容,还包括正则表达式等内容。

    WTL 最初应该与 ATL 一起使用,并涵盖与 GUI 相关的方面,例如通用控件上的瘦包装器、GDI 对象、应用程序 GUI 框架、帧/视频模型、自定义控件。它在 ATL 开始这样做之前提供了CString 类,这是两个库重叠的地方之一。在 WTL 开源并且微软提供了免费版本的 Visual Studio 之后,WTL 也被更新为可以在没有 ATL 的情况下使用,从而有助于使用仅免费的工具构建应用程序。

    【讨论】:

      【解决方案2】:

      是的。 WTL 建立在 ATL 之上。但是,调用 ATL 子集是不正确的。 ATL 作为在 Windows 操作系统上编程的 MFC 方法的基于模板的替代方案独立存在。代码膨胀要少得多。 ATL 几乎可以处理除实际窗口、对话框等之外的所有内容。

      WTL 是 MFC 窗口模型的模板替代方案,就像 ATL 提供其他窗口服务的替代方案一样。 WTL 需要 ATL。反之亦然。

      关于 codeproject 的 Dunn 文章对 WTL 进行了很好的回顾。

      WTL for MFC Programmers, Part I - ATL GUI Classes 是该系列中的第一个。指向系列中其他文章的导航链接位于每篇文章的底部。

      【讨论】:

      • 不错的答案!如果您可以链接到您正在谈论的文章,​​那就更好了。 :-) 欢迎来到 Stack Overflow!
      【解决方案3】:

      ATL 是为 ActiveX 控件创建的,即存在于独立应用程序中的控件。 WTL 旨在通过为应用程序本身提供类来填补 ATL 中的漏洞。它们应该一起使用。

      【讨论】:

        猜你喜欢
        • 2011-11-04
        • 2012-05-03
        • 2010-10-02
        • 2011-12-12
        • 2010-09-16
        • 2012-03-14
        • 2012-02-06
        • 2011-02-25
        • 2011-11-22
        相关资源
        最近更新 更多