C++ IDispatch派生类的ATL模板

C++ IDispatch派生类的ATL模板,c++,com,atl,C++,Com,Atl,明天我计划做一些与IDispatch相关的工作,我必须创建一个支持这个接口的类 我已经使用ATL类创建COM对象和管理COM指针有一段时间了,所以我也想在我的类中使用它们。但到目前为止的研究和与同事的讨论让我相信,即使我想创建一个具有一个属性或方法的简单类,我也需要所有重量级IDL的东西 如果是这样的话,我可能会从头开始写所有的东西,但我仍然希望我遗漏了一些东西。有我遗漏的模板吗?ATL有一个IDispatchImpl类。ATL有一个IDispatchImpl类。有。但我不知道它有多大帮助。它需

明天我计划做一些与IDispatch相关的工作,我必须创建一个支持这个接口的类

我已经使用ATL类创建COM对象和管理COM指针有一段时间了,所以我也想在我的类中使用它们。但到目前为止的研究和与同事的讨论让我相信,即使我想创建一个具有一个属性或方法的简单类,我也需要所有重量级IDL的东西


如果是这样的话,我可能会从头开始写所有的东西,但我仍然希望我遗漏了一些东西。有我遗漏的模板吗?

ATL有一个
IDispatchImpl
类。

ATL有一个
IDispatchImpl
类。

有。但我不知道它有多大帮助。它需要那些IID和LIBID,我不需要或不想用它们来完成任务。但是谢谢。您总是需要为每个接口使用
IID
,但如果您不需要它,则不必指定
LIBID
IDispatch将在内部使用默认值。如果您只是为了回调而将IDispatch传递给另一台服务器,该怎么办?例如,它将使用指针、调用名称的get ID或直接调用method0?例如:有。但我不知道它有多大帮助。它需要那些IID和LIBID,我不需要或不想用它们来完成任务。但是谢谢。您总是需要为每个接口使用
IID
,但如果您不需要它,则不必指定
LIBID
IDispatch将在内部使用默认值。如果您只是为了回调而将IDispatch传递给另一台服务器,该怎么办?例如,它可以使用指针、调用名称的get ID,或者直接调用method0?例如:+1,但是这个类使用typelib。OP可能会反对这一点,但我从一开始就使用IDL并嵌入typelib会让事情变得更简单。
IDispatchImpl
的默认行为是使用typelib,但它不会直接访问typelib。您可以使用
tihclass
参数提供绕过该行为的伪类。否则,只需直接从
IDispatch
派生并手动实现其方法即可。它们中的许多可以只返回
E\u NOTIMPL
+1,但是这个类使用typelib。OP可能会反对这一点,但我从一开始就使用IDL并嵌入typelib会让事情变得更简单。
IDispatchImpl
的默认行为是使用typelib,但它不会直接访问typelib。您可以使用
tihclass
参数提供绕过该行为的伪类。否则,只需直接从
IDispatch
派生并手动实现其方法即可。他们中的许多人只能返回
E\u NOTIMPL