您能否提供一个通过比较显示 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::AddRefIUnknown::ReleaseIUnknown::QueryInterface的调用。使用它们将使您的代码更易于阅读,并且不易出现COM引用计数错误。
  • CComBSTR / CComVariant :ATL提供了这些类,从而降低了处理BSTRVARIANT COM类型的复杂性。
  • 关于com - 人们为什么使用ATL进行COM编程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3656907/

    10-12 23:21