【发布时间】:2016-04-09 00:31:48
【问题描述】:
我添加了一个新接口 IAEx,它是从现有接口 IA(派生自 IDispatch)扩展而来的。
idl 有哪些需要改变的地方? 我已将 coclass 定义更改为从新定义继承。 我在idl中更改了coclass条目,之前是这样的。
(我需要默认界面作为新界面)
coclass CAx
{
[default] interface IA
[default, source] dispinterface IAEvents;
};
改成
coclass CAx
{
[default] interface IAEx
[default, source] dispinterface IAEvents;
};
我可以更改默认界面吗?
coclass 定义更改。 老一个
class ATL_NO_VTABLE CAx:
...
public CCIDispatchImpl<IA, &IID_IA, &LIBID_CCALib>,
新的。
class ATL_NO_VTABLE CAx:
...
public CCIDispatchImpl<IAEx, &IID_IAEx, &LIBID_CCALib>,
这样好吗?
COM MAP 条目修改: 老一:
COM_INTERFACE_ENTRY(IA)
COM_INTERFACE_ENTRY2(IDispatch,IA)
新的:
COM_INTERFACE_ENTRY(IAEx)
COM_INTERFACE_ENTRY2(IDispatch,IAEx)
我还需要在 COM MAP 中添加旧接口吗?
【问题讨论】:
-
“这样好吗?” 那么,它是否按预期工作?
-
它有效,但我担心它是否会影响现有客户?
-
IAEx是否继承IA?