1 Com对象类不一定实现IDispatch接口,但是连接点接口从IDispatch接口派生
2.一个Com对象可以实现多个连接点
3.在IDL文件中,可以手动添加连接点
library AddComponentLib
{
importlib("stdole2.tlb");
[
uuid(5E12F75D-2448-42A2-B85D-1324ADC31ECD),
helpstring("_ICheckEvents 接口")
]
dispinterface _ICheckEvents
{
properties:
methods:
[id(1), helpstring("方法Check")] HRESULT Check([in] LONG lRet);
};
importlib("stdole2.tlb");
[
uuid(5E12F75D-2448-42A2-B85C-1324ADC31ECC),
helpstring("_IAddEvents 接口")
]
dispinterface _IAddEvents
{
properties:
methods:
[id(1), helpstring("方法Result")] HRESULT Result([in] LONG lResult);
[id(2), helpstring("方法Check")] HRESULT Check([in] LONG lRet);
};
[
uuid(337A362D-ED28-4CF8-8254-332B5A44353B),
helpstring("Add Class")
]
coclass Add
{
[default] interface IAdd;
[default, source] dispinterface _IAddEvents;
[source] dispinterface _ICheckEvents;
};
};
黑色字体为手动添加内容,可以从IDE中添加连接点接口_ICheckEvents
注意:根据我的编程实践 [source] dispinterface _ICheckEvents; 不是必须的,若不添加此行,在C++中查找、设置连接点接口工作正常,但是在C#调用中,不会为_ICheckEvents接口生成事件,所以为了更好的跨语言调用,应遵循IDL编写规范,添加此行