我也来看Connection Point与VB

Connection Point,用COM的人都知道,至少我们写控件时Fire Event肯定是要用到.这项技术无非就是由源对象定义出接口,客户程序定义接收器实现出接口,然后源对象就可以在工作的时候通过这个机制向客户程序说说悄悄话或者发发牢骚.

虽然书上说使用IDispatch接口做为出接口,是利用到其迟绑定特性,我还是不理解,就算是客户程序知道了我的出接口的类型信息又怎么样?怎么向用户表示呢?换句话说,VB里面是怎么实现出接口的呢?没人告诉我,那让我来猜一猜:

在Form中加入控件后,VB拿到控件所有的Connection Point,了解了所有的信息之后,实现一个最简单的接收器-一个函数指针数组FuncArray,并构造最简单的回调函数原型xxCallBack( VARIANT * parameters, long paramCount),其中VARIANT数组用来保存参数信息, paramCount用来记录当前回调的参数个数. 默认在FuncArray中各个函数指针处都写入NULL,表明不做任何操作, 当用户在编辑框中选中了某个控件的某个事件的时候,VB找到对应的出接口信息,并根据其信息生成一串文本,用来表征默认的回调函数名,并在用户程序中添加此函数,然后在FuncArray的对应位置写入这个函数的指针.以后,当源对象调用出接口的这个方法时,VB就会调用这个用户函数实现功能.

以上纯属瞎猜.

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值