- 注册时间
 - 2021-4-16
 
- 最后登录
 - 2023-11-9
 
- 在线时间
 - 4 小时
 
 
 
 
 
编程入门 
  
	- 龙马币
 - 132 
 
 
 
 
 | 
 
 
[in][out][retval]用于COM自动化组件,主要是用于生成包装类用的 
 
[in]类型表明参数是一个输入参数,所以这个参数不会向外界返回结果 
 
[out]类型表明参数是个输出参数,所以这个参数会向外界返回结果,参数类型只能是指针类型 
 
[out,retval]类型表明参数是个输出参数, retval 必须与 out 联用,并且在参数类表中只有最后一个参数可以被指定为 [out,retval] 属性,包装类会用这个参数的类型作为包装类方法的返回值 
 
我们举个例子 
我们在 vc 中引入一个COM组件, vc 会分析 com 组件的类型库信息 
假设有一个方法说明如下 
 
[id(1), helpstring("method Foo")] HRESULT Foo([in] long lIn, [out] BSTR* bstrOut, [out,retval] BSTR* bstrResult); 
 
那么vc生成的包装类的方法可能是 
 
BSTR Foo(long lIn , BSTR& bstrOut); 
 
我们看到,由于 bstrResult 具有 [out,retval] 属性,所以生成的包装类的方法返回值不再是 HRESULT类型,而是 BSTR 类型,这样,包装类就会更加易于使用 |   
 
 
 
 |