MFC与ATL在ActiveX中的比较

3

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

另一方面,ATL是更轻量级的选择,适用于不需要MFC图形用户界面部分的情况。

我应该使用什么?如果我可以同时使用两者,使用它们的利弊是什么?

3个回答

6
使用ATL。我已经在MFC中开发了20多年。对于绝大多数用途,ATL是更好的选择,因为它更轻量级且更容易理解 - 尽管两者都有陡峭的学习曲线。
我之所以选择MFC而不是ATL的唯一原因是:
1)我正在编写一个非常复杂的ActiveX / windows控件,并且写入MFC的窗口控件部分是有意义的,因此在MFC中使用COM接口也是有意义的。但是,对于补充对象(例如返回Object的属性),除非它们也是非常复杂的Windows控件,否则我会使用ATL。
2)我必须使用OLE(对象链接和嵌入)来处理文档类型,而使用MFC内置框架更容易实现。
我已经在同一个MFC项目上工作了20多年,这是一个非常复杂的Windows程序。该程序的大多数方面都通过COM公开。我们有MFC COM和ATL COM混合使用。当我开始工作时,在ATL获得流行之前,我通常会在MFC中实现COM对象。现在,除非符合上述两个原因之一,否则我使用ATL。
但是,这只是我的观点。

4

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

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


4

ATL是我最喜爱的技术!

在设计界面和处理组件对象方面,ATL更加灵活且可调性极高。

ATL还允许轻松构建双重接口。而MFC仅提供了直接的IDispatch实现。

即使在我的MFC应用程序中,我也仅内部使用ATL来处理所有COM部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接