当前位置:编程学习 > VB >>

vb 中如何传递回调接口指针

我用vb加载一个c++编写的com文件,现在有一个函数需要传入回调接口的指针,老是报类型不匹配。请高手帮忙看看,com idl的定义如下:
library BIZCOMLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");

[
uuid(715F4705-D954-4942-AF67-A480D356ACBA),
helpstring("ENTRFUNC Class")
]
coclass ENTRFUNC
{
[default] inte易做图ce IENTRFUNC;
[source, default] inte易做图ce ICallBack;
调用函数:
[id(4), helpstring("method ENTRFUNC_Init")] HRESULT ENTRFUNC_Init([in] VARIANT use_ssl, [in] VARIANT start_conn, [in] ICallBack *pCallBack, [in] VARIANT *parg);
vb调用方法:
Private Sub CommandButton2_Click()
Dim myobject As Object
Set myobject = Nothing
Set myobject = CreateObject("BIZCOM.ENTRFUNC")
Call myobject.ENTRFUNC_TASInit(1)
Call myobject.ENTRFUNC_Init(0, 1, myobject, 0)
End Sub

其中 ICallBack *pCallBack在vb中该如何定义 --------------------编程问答-------------------- 定义成long型 
回调函数代码要放在模块里不能放在窗体里 实参用函数名前加AddressOf限定 --------------------编程问答-------------------- 大侠能给个代码例子不,本人vb水平一般 --------------------编程问答-------------------- 另外,我这个是加载的com 不是dll,函数还需要重新定义吗 --------------------编程问答-------------------- 这个我也说不好,com接口不知道会不会被VB标记成unknow,如果那样的话可能就搞不定了,安全一点的话定义成long型的


VB下的话,应该和dll一样, Call myobject.myfunction a,b,c,..., AddressOf MyCallBackFun

MyCallBackFun要定义在模块文件里 --------------------编程问答-------------------- 还有,如果你com组件是自己做的话,我觉得做成事件会更好些,callback毕竟不符合VB的风格
你在VB菜单"工程">>"引用"下边可以找到自己的com组件,选中
然后你可以在窗体中声明一个 Private WithEvents myobject As BIZCOM.ENTRFUNC
这样你就可以选到组件中的事件了.
补充:VB ,  COM/DCOM/COM+
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,