如何使用 ATL 创建匿名 IDispatch 函数?
有没有一种简单的方法来创建一个从 IDispatch 派生的类,并且可以像这样传递给 API(这是 C++ ):
pDOM2->attachEvent(CComBSTR("event"), new DispatchFunction);
我知道如何创建一个 C++ 对象来处理 dispid 值为 0 的调用,但它总是手动实现所有 IDispatch 有点痛苦。我想知道 ATL 是否有一些标准的方法来做到这一点,因为它相当常见。
Is there an easy way to create a class that is derived from IDispatch and that can be passed to API like this (this is C++ ):
pDOM2->attachEvent(CComBSTR("event"), new DispatchFunction);
I know how to create a C++ object that handle an invoke with a dispid of value 0 but it's always a bit painful to implement all IDispatch by hand. I was wondering if ATL has some standard way of doing it as it is fairly common.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
默认情况下,ATL 创建“自动双重”COM 类。它们支持早期绑定和 IDispatch。您将看到 IDispatchImpl<>在他们的继承名单中。您在 IDL 中声明 dispid。不需要额外的工作。
By default ATL creates "auto-dual" COM classes. They support both early binding and IDispatch. You'll see IDispatchImpl<> in their inheritance list. You declare the dispid in the IDL. No extra work is required.