【问题标题】:MFC vs ATL for ActiveX用于 ActiveX 的 MFC 与 ATL
【发布时间】:2017-06-05 10:26:36
【问题描述】:

对于 ActiveX 开发,我应该使用什么? MFC 还是 ATL?
在Microsoft Documents 中,它说我们可以使用 MFC 来构建 ActiveX 控件。但是当我在谷歌上搜索时,我看到有人提到 ATL 对这项工作有好处。这是我从Wikipedia 得到的,这似乎证实了这一论点。

另一方面,在不需要 MFC 的图形用户界面部分的情况下,ATL 是一种更轻量级的替代方案。

我应该使用什么?如果我可以同时使用它们,使用它们的优缺点是什么?

【问题讨论】:

    标签: c++ mfc atl


    【解决方案1】:

    使用 ATL。我已经在 MFC 中开发了 20 多年。对于绝大多数用途,ATL 是更好的选择,因为它更轻量级且更易于理解 - 尽管两者都有陡峭的学习曲线。

    我选择 MFC 而不是 ATL 的唯一原因是:

    1) 我正在编写一个非常复杂的 ActiveX/windows 控件,在 MFC 中编写它的 windows 控件部分是有意义的,因此在 MFC 中搭载控件的 COM 接口是有意义的。但是,对于补充对象(比如返回对象的属性),我会使用 ATL,除非它们也是非常复杂的 Windows 控件。

    2) 我必须对文档类型使用 OLE(对象链接和嵌入),使用 MFC 的内置框架更容易。

    我在同一个 MFC 项目上工作了 20 多年,这是一个非常复杂的 Windows 程序。程序的大部分方面都由 COM 公开。我们混合了 MFC COM 和 ATL COM。当我刚开始时,在 ATL 获得关注之前,我通常在 MFC 中实现 COM 对象。现在,除非符合上述两个原因,否则我会使用 ATL。

    但是,这只是一个意见。

    【讨论】:

      【解决方案2】:

      虽然可以使用 MFC 构建 ActiveX 组件,但 ATL 被设计为一种轻量级且更高效的低开销替代方案。此外,您还可以在 ATL 之上使用 WTL 作为 GUI 部分。

      如果您想要更小的低开销 ActiveX 组件,我建议您使用 ATL(和 WTL)。

      【讨论】:

        【解决方案3】:

        ATL 是我的第一名!

        在设计界面和 COM 对象处理方式方面更加灵活。

        ATL 还允许轻松构建双接口。 MFC 只是一个简单的 IDispatch 实现。

        即使在我的 MFC 应用程序中,我也只在内部对所有 COM 部分使用 ATL。

        【讨论】:

          猜你喜欢
          • 2010-12-16
          • 2011-01-30
          • 2012-03-31
          • 2013-09-08
          • 1970-01-01
          • 2011-02-08
          • 2017-09-12
          • 2011-04-04
          • 2012-09-05
          相关资源
          最近更新 更多