📄 subject_30546.htm
字号:
<p>
序号:30546 发表者:misanel 发表日期:2003-02-24 13:48:27
<br>主题:如何使接口作为方法的参数(支持VB)?
<br>内容:我用VC6的ATL<BR>请看下面的idl声明<BR>interface IParam<BR>interface IMyObj1 : IDispatch <BR>{<BR> HRESULT GetXYZ( [in] long n, [out, retval] IParam** ppVal);<BR> //...<BR>}<BR>interface IMyObj2 : IDispatch<BR>{<BR> HRESULT SetParam ( [in] IParam* pVal );<BR> //..<BR>}<BR>在VC下可以用,也就是说:我创建了IMyObj1和IMyObj2,然后:<BR>IMyObj2.SetParam ( IMyObj1.GetXYZ(0));<BR>但在VB下,总是编译不通过,说是不支持参数什么的。。。。<BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:风之子 回复日期:2003-02-24 16:58:02
<br>内容:要在VB下使用,必须改成<BR>HRESULT GetXYZ( [in] long n, [out, retval] IDispatch ** ppVal);<BR>而且你所要用的COM组件必须支持IDispatch 接口<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:Bruise Lee 回复日期:2003-02-25 23:51:17
<br>内容:只要IDL里声明了IParam或者提供含有IParam声明的TLB文件供VB引用即可,不需要改成IDispatch<BR>在VB里除了要保证IParam的引用外,只要<BR>Set vbObjX = xxx.GetXYZ(n)<BR>yyy.SetParam vbObjX<BR>即可
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -