我用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] interface IENTRFUNC;
[source, default] interface 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中该如何定义
library BIZCOMLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb"); [
uuid(715F4705-D954-4942-AF67-A480D356ACBA),
helpstring("ENTRFUNC Class")
]
coclass ENTRFUNC
{
[default] interface IENTRFUNC;
[source, default] interface 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中该如何定义
回调函数代码要放在模块里不能放在窗体里 实参用函数名前加AddressOf限定
VB下的话,应该和dll一样, Call myobject.myfunction a,b,c,..., AddressOf MyCallBackFunMyCallBackFun要定义在模块文件里
你在VB菜单"工程">>"引用"下边可以找到自己的com组件,选中
然后你可以在窗体中声明一个 Private WithEvents myobject As BIZCOM.ENTRFUNC
这样你就可以选到组件中的事件了.
要是这样放在模块里面定义也不行。
addressof要的是函数、过程,你传递一个对象指针过去也不对呀