MFC vs ATL for ActiveX

MFC vs ATL for ActiveX

本文关键字:ActiveX for ATL vs MFC      更新时间:2023-10-16

对于ActiveX开发,我应该使用什么?MFC还是ATL
在Microsoft文档中,它说我们可以使用MFC来构建ActiveX控件。但当我在谷歌上搜索时,我看到一些人提到ATL适合这份工作。这是我从维基百科上得到的,似乎证实了这一论点

另一方面,在不需要MFC的图形用户界面部分的情况下,

ATL是一种更轻量级的替代方案。

我应该使用什么?如果我可以同时使用这两种方法,那么使用它们的优点和缺点是什么?

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

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

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

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

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

但是,这只是一种意见。

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

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

ATL是我的头号球星!

它在设计接口和COM对象处理方式方面更加灵活,可进行极大的调整。

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

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