MFC 与 ActiveX 的 ATL
MFC vs ATL for ActiveX
对于 ActiveX 开发,我应该使用什么? MFC 还是 ATL?
在 Microsoft Documents it says we can use MFC to build ActiveX controls. But when I was googling I saw some people mentioning that ATL is good for the job. This is what i got from Wikipedia 中,这似乎证实了这一论点。
ATL, on the other hand, is a more lightweight alternative in situations where the graphical user interface parts of MFC are not required.
我应该使用什么?如果我可以同时使用两者,使用它们的优缺点是什么?
虽然可以使用 MFC 构建 ActiveX 组件,但 ATL 被设计为一种轻量级且更高效的 lower-overhead 替代方案。此外,您还可以在 ATL 之上使用 WTL 来实现 GUI 部分。
如果您想要更小的 low-overhead ActiveX 组件,我建议使用 ATL(和 WTL)。
ATL 是我的 No.1!
在界面设计上更加灵活,COM对象的处理方式也非常可调。
ATL 还允许轻松构建双接口。 MFC 只有一个直接的 IDispatch 实现。
即使在我的 MFC 应用程序中,我在内部也只对所有 COM 部分使用 ATL。
使用ATL。我已经使用 MFC 进行了 20 多年的开发。对于绝大多数用途,ATL 是更好的选择,因为它更轻量且更易于理解——尽管两者都有陡峭的学习曲线。
我选择使用 MFC 而不是 ATL 的唯一原因是:
1) 我正在编写一个非常复杂的 ActiveX/windows 控件,在 MFC 中编写它的 windows 控件部分是有意义的,因此搭载 COM 接口是有意义的MFC中的控件。但是,对于补充对象(比如 属性 那个 returns 一个对象),我会使用 ATL,除非它们也是一个非常复杂的 windows 控件。
2) 我必须对文档类型使用 OLE(对象链接和嵌入),为此使用 MFC 的内置框架更容易。
我在同一个 MFC 项目上工作了 20 多年,这是一个非常复杂的 Windows 程序。程序的大多数方面都由 COM 公开。我们混合使用了 MFC COM 和 ATL COM。当我刚开始时,在 ATL 获得关注之前,我通常在 MFC 中实现 COM 对象。现在,除非符合上述两个原因,否则我使用 ATL。
但是,这只是一个意见。
对于 ActiveX 开发,我应该使用什么? MFC 还是 ATL?
在 Microsoft Documents it says we can use MFC to build ActiveX controls. But when I was googling I saw some people mentioning that ATL is good for the job. This is what i got from Wikipedia 中,这似乎证实了这一论点。
ATL, on the other hand, is a more lightweight alternative in situations where the graphical user interface parts of MFC are not required.
我应该使用什么?如果我可以同时使用两者,使用它们的优缺点是什么?
虽然可以使用 MFC 构建 ActiveX 组件,但 ATL 被设计为一种轻量级且更高效的 lower-overhead 替代方案。此外,您还可以在 ATL 之上使用 WTL 来实现 GUI 部分。
如果您想要更小的 low-overhead ActiveX 组件,我建议使用 ATL(和 WTL)。
ATL 是我的 No.1!
在界面设计上更加灵活,COM对象的处理方式也非常可调。
ATL 还允许轻松构建双接口。 MFC 只有一个直接的 IDispatch 实现。
即使在我的 MFC 应用程序中,我在内部也只对所有 COM 部分使用 ATL。
使用ATL。我已经使用 MFC 进行了 20 多年的开发。对于绝大多数用途,ATL 是更好的选择,因为它更轻量且更易于理解——尽管两者都有陡峭的学习曲线。
我选择使用 MFC 而不是 ATL 的唯一原因是:
1) 我正在编写一个非常复杂的 ActiveX/windows 控件,在 MFC 中编写它的 windows 控件部分是有意义的,因此搭载 COM 接口是有意义的MFC中的控件。但是,对于补充对象(比如 属性 那个 returns 一个对象),我会使用 ATL,除非它们也是一个非常复杂的 windows 控件。
2) 我必须对文档类型使用 OLE(对象链接和嵌入),为此使用 MFC 的内置框架更容易。
我在同一个 MFC 项目上工作了 20 多年,这是一个非常复杂的 Windows 程序。程序的大多数方面都由 COM 公开。我们混合使用了 MFC COM 和 ATL COM。当我刚开始时,在 ATL 获得关注之前,我通常在 MFC 中实现 COM 对象。现在,除非符合上述两个原因,否则我使用 ATL。
但是,这只是一个意见。