⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_14467.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:14467 发表者:hufeifei 发表日期:2002-09-07 14:20:24
<br>主题:com组件接口返回值能返回多个吗?
<br>内容:比如:InitMyComp([in]int Number1,[out,retval]int* Number2);这样返回一个值Number2<BR>怎么才能返回多个值?<BR>InitMyComp([in]int Number1,[out] int* Number2,[out,retval]int* Number3);这样的接口定义结果用InitMyComp(a,b)调用出错,是怎么回事?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:矢玄 回复日期:2002-09-07 14:38:26
<br>内容:去掉接口定义中的 retval 参数,其他多个的情况和普通函数没什么区别,retval 一般用在属性的返回值中,不是用在普通的函数中。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:hufeifei 回复日期:2002-09-07 15:14:26
<br>内容:是不是只要存在一个retval,其他的out就不行?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:矢玄 回复日期:2002-09-07 20:24:23
<br>内容:一个函数只能存在一个retval ,而且如果存在retval 的话,其他参数的顺序都必须调整,和其他的参数顺序不一样。
<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>回复者:矢玄 回复日期:2002-09-08 21:56:24
<br>内容:看到你的留言了,原则上你的函数申明没有错,由于你调用两个以上的BSTR ,所以返回值一定要注意用 _bstr_t().copy()方法返回。 具体如例子所示:<BR>*p1 =(_bstr_t(strReturn1)).copy();<BR>*p2=(_bstr_t(strReturn2)).copy();<BR><BR>其中strReturn1,strReturn2 为具体需要返回的字符串变量。<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>
回复者:hufeifei 回复日期:2002-09-09 08:43:37
<br>内容:你说的没错,但是我还是出错.<BR>[id(1), helpstring("method Test")] HRESULT Test([out] BSTR *P1,[out] BSTR *P2);<BR>STDMETHODIMP AspDataCom::Test(BSTR *P1, BSTR *P2)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;AFX_MANAGE_STATE(AfxGetStaticModuleState())<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add your implementation code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString str = "abcde";<BR>&nbsp;&nbsp;&nbsp;&nbsp;*P1 = (_bstr_t(str.AllocSysString())).copy();<BR>&nbsp;&nbsp;&nbsp;&nbsp;str = "kkkkkk";<BR>&nbsp;&nbsp;&nbsp;&nbsp;*P2 = (_bstr_t(str.AllocSysString())).copy();<BR>&nbsp;&nbsp;&nbsp;&nbsp;return S_OK;<BR>}<BR>难道这样不行?为什么用返回值就可以?<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>
回复者:矢玄 回复日期:2002-09-09 09:07:36
<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>
回复者:hufeifei 回复日期:2002-09-10 12:32:34
<br>内容:我知道,出错的原因是我用ASP(类似VB语言Script)调用该COM,赋值应该是指针,而ASP不知道怎么用指针,是调用错了,非常感谢.这个问题虽然没有最终解决,但是不是你我的原因,谢谢你的正确解答.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿四 回复日期:2002-09-15 11:17:50
<br>内容:你COM是用VB写的吗?<BR>用VC可以调用马? 
<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 + -