您能否提供一个通过比较显示 ATL 的好处的示例?
最佳答案
听起来您似乎想要一些有关ATL简化COM编程的具体示例。以下是我发生的事情。
CComObjectRootEx
:通过从CComObjectRootEx
派生您的COM类,您可以免费获得线程安全的引用计数。 CComCoClass
:此基类实现了用于实例化类的所有方法,包括客户端将IClassFactory
与组件一起使用所需的CoGetClassObject
内容。 COM_INTERFACE_ENTRY
宏:ATL提供了一系列宏在 BEGIN_COM_MAP
和 END_COM_MAP
之间使用,您可以使用它们以正确的方式实现IUnknown::QueryInterface
的胆量,无论它们是什么。 IDispatchImpl
:如果希望脚本可访问您的组件,则必须实现IDispatch
。 ATL提供了IDispatchImpl
类,它免去了自己实现的麻烦。 CComPtr
/ CComQIPtr
:ATL提供了这些智能指针类,它们封装了对IUnknown::AddRef
,IUnknown::Release
和IUnknown::QueryInterface
的调用。使用它们将使您的代码更易于阅读,并且不易出现COM引用计数错误。 CComBSTR
/ CComVariant
:ATL提供了这些类,从而降低了处理BSTR
和VARIANT
COM类型的复杂性。 关于com - 人们为什么使用ATL进行COM编程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3656907/