- 注册时间
- 2021-4-16
- 最后登录
- 2023-11-9
- 在线时间
- 4 小时
编程入门
- 龙马币
- 108
|
[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 类型,这样,包装类就会更加易于使用 |
|