请教各位大牛关于vb com组件回调对象的问题
这个是com的idl文件,对象是ENTRFUNC
[
uuid(715F4705-D954-4942-AF67-A480D356ACBA),
helpstring("ENTRFUNC Class")
]
coclass ENTRFUNC {
[default] interface IENTRFUNC;
[default, source] interface ICallBack;
};
在VB中加入的参考,正常的调用可以
Private cbtest As New ENTRFUNC
Text1.Text = ""
Dim str As String
cbtest.ENTRFUNC_GetVersion str
Text1.Text = str
定义回调类的时候,也能取到回调方法
Icallback
Public WithEvents cback As ENTRFUNC
Private Sub cback_OnConnected(parg As Variant)
frmAddIn.Text1 = "connected"
End Sub
但是给该类赋值的时候会报错
Private ctest As New Icallback
set ctest.cback= new ENTRFUNC
会报runtime error 430的错误,意思是不支持自动化,或者不期望的接口
另外 在dephi中使用该com一切正常
在dephi里引入com会有两个接口,IENTRFUNC,ICallBack
其中的回调注册函数和idl文件一致
HRESULT ENTRFUNC_Init(
[in] VARIANT use_ssl,
[in] VARIANT start_conn,
[in] ICallBack* pCallBack,
[in] VARIANT* parg);
但是在VB中,就变成了
ENTRFUNC_Init(use_ssl,start_conn,pCallBack ENTRFUNC,parg)
求解各位大牛,或者提供相关书籍,感谢了!