[out]与[out,retval]

laughsky 2001-11-08 04:48:26
输出参数和输出参数与返回值得结合有什么不同?
难到不加retval,输出参数就不能被客户端得到么,怎样才可以让一个接口有两个客户端可以得到的值,比如一个方法定义为GetUserName([out]ULONG* ulResult, [out,retval]BSTR* bstrName),我可以在客户端得到自己定义的返回信息(ulResult)么?
...全文
211 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
laughsky 2001-11-14
  • 打赏
  • 举报
回复
但是使用参数out,为什么不可以在客户端得到其值?(我试验过,CS都在一台机器上是可以的,但如果不在同一台机器上,就不行了,必需有retval)
arxing 2001-11-08
  • 打赏
  • 举报
回复
使用retval后,某些客户端会把这个参数处理成返回值,如VB, Delphi等。
就算在VC,你编译产生一个类型库后,用VC的import语句,产生一个tlh文件,它会把GetUserName处理成 _bstr_t GetUserName(ulResult);
所以,一个方法最多只能有一个retval,但是可以有多个out。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧