Com连接点

 

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编写规范,添加此行

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值