在Dephi中实现Com的回调函数

2006年12月26日

最近在学着做Dephi的程序。

但毕竟做了VC这么多年,原来的OCX想嵌入用,不想再做一遍了。

Dephi嵌个OCX还是很简单,只要用import ActiveX control菜单就可以了。不过问题来了,我原来的OCX有个回调的机制(自己写了个ICallbackMM的Interface,里面有个OnChange函数),怎么让Dephi实现这个ICallbackMM Interface呢?

试了半天,原来方法很简单,

1,在我的new form下,加入一个TMMCallBack就可以了。代码如下:

  TMMCallBack = class(TInterfacedObject,ICallBackMMe)
      public
        procedure OnChange; safecall;
    end;

这时,TInterfacedObject可以帮你自动生成AddRef,Release,QueryInterface。

2,我只需要写OnChange函数就可以了。如下:

procedure TMMCallBack.OnChange; safecall;
begin
     Form1.ReplyOCXChange;
end;

3,然后在我的Form1中加个成员变量:

mySink: TMMCallBack;

4,把这个mySink传给我的OCX。

MyOCX.Advise(mySink,cookie); // 这个Advise是我原来OCX的函数,可以记下客户端,当OCX有某些改动的话,就调用mySink->OnChange(),当然需要个unAdvise(cookie)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值