对于ActiveX开发,我应该使用什么? MFC还是ATL?
在Microsoft Documents中,它表示我们可以使用MFC来构建ActiveX控件。但是当我在Google上搜索时,我看到有人提到ATL对这项工作很有帮助。这就是我从Wikipedia得到的,这似乎证实了这一论点。
另一方面,在不需要MFC的图形用户界面部分的情况下,ATL是一种更轻量级的替代方案。
我应该使用什么?如果我可以同时使用它们,那么使用它们的优缺点是什么?
答案 0 :(得分:5)
使用ATL。我在MFC开发了20多年。对于绝大多数用途而言,ATL是更好的选择,因为它更轻巧,更易于理解 - 尽管两者都有陡峭的学习曲线。
我选择使用MFC而不是ATL的唯一原因是:
1)我正在编写一个非常复杂的ActiveX / Windows控件,在MFC中编写它的windows控件部分是有意义的,因此在MFC中搭载控件的COM接口是有意义的。但是,对于补充对象(比如一个返回Object的属性),我会使用ATL,除非它们也是一个非常复杂的窗口控件。
2)我必须对文档类型使用OLE(对象链接和嵌入),并且更容易使用MFC的内置框架。
我已经在同一个MFC项目上工作了20多年,这是一个非常复杂的Windows程序。该计划的大多数方面都是由COM公开的。我们混合使用MFC COM和ATL COM。当我第一次开始时,在ATL获得牵引力之前,我通常在MFC中实现COM对象。现在,除非出现上述两个原因,否则我使用ATL。
但是,这只是一种意见。
答案 1 :(得分:4)
虽然可以使用MFC构建ActiveX组件,但ATL被设计为轻量级且更高效的低开销替代方案。此外,您还可以在ATL顶部使用WTL作为GUI部件。
如果你想要一个较小的低开销ActiveX组件,我建议使用ATL(和WTL)。
答案 2 :(得分:4)
ATL在这里是我的第一名!
设计界面以及COM对象处理的调整方式非常灵活。
ATL还允许轻松构建双接口。 MFC只是一个直接的IDispatch实现。
即使在我的MFC应用程序中,我也只在内部使用ATL来处理所有COM部件。