2017-01-20 55 views
3

对于ActiveX开发,我应该使用什么? MFC或ATL?
Microsoft Documents它说我们可以使用MFC来构建ActiveX控件。但是当我在Google上搜索时,我看到一些人提到ATL对这项工作很有帮助。这是我从Wikipedia得到的,这似乎证实了这个论点。
MFC vs ATL for ActiveX

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

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

回答

5

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

我会选择MFC在ATL的使用的唯一理由是:

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

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

我一直在研究20年以上的同一个MFC项目,一个非常复杂的Windows程序。程序的大部分内容都由COM公开。我们有MFC COM和ATL COM的混合。当我第一次开始时,以及在ATL获得牵引力之前,我通常在MFC中实现COM对象。现在,除非出于上述两个原因,我使用ATL。

但是,这只是一个意见。

4

尽管可以使用MFC构建ActiveX组件,但ATL被设计为轻量且更高效的低开销替代方案。而且,你也可以在ATL的顶部使用WTL作为GUI部件。

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

4

ATL在这里是我的第一!

它在设计界面和COM对象处理如何极其灵活的情况下更加灵活。

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

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