variantChangeType 函数 (oleauto.h)
重要
此 API 受Microsoft 支持部门主题 VarI8FromCy 在 CY 值非常大时生成错误值的问题的影响。
将变体从一种类型转换为另一种类型。
语法
HRESULT VariantChangeType(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[in] USHORT wFlags,
[in] VARTYPE vt
);
参数
[out] pvargDest
目标变体。 如果这与 pvarSrc 相同,则将就地转换变体。
[in] pvarSrc
要转换的变体。
[in] wFlags
标志。
[in] vt
要转换为的类型。 如果返回代码S_OK,则 *pvargDest 的 vt 字段保证等于此值。
返回值
此函数可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
成功。 |
|
变体类型不是有效的变体类型。 |
|
pvarSrc 指向的数据不适合目标类型。 |
|
无法将 参数强制设置为指定的类型。 |
|
其中一个参数无效。 |
|
内存不足,无法完成操作。 |
注解
VariantChangeType 函数处理基本类型之间的强制转换, (包括数字到字符串和字符串到数字强制) 。 pvarSrc 参数在转换过程中更改。 例如,如果源变体的类型为 VT_BOOL,而目标的类型为 VT_UINT,则 pvarSrc 参数首先转换为 VT_I2 然后转换继续。 通过获取引用的值,将具有VT_BYREF集的变体强制转换为值。 通过调用对象的 Value 属性 (DISPID_VALUE) ,将对象强制转换为值。
通常, IDispatch::Invoke 的实现者确定要访问的成员,然后调用 VariantChangeType 以获取一个或多个参数的值。 例如,如果 IDispatch 调用指定采用一个字符串参数的 SetTitle 成员,则实现者将调用 VariantChangeType 以尝试强制参数VT_BSTR。 如果 VariantChangeType 不返回错误,则可以直接从 VARIANTARG 的 bstrVal 字段获取参数。 如果 VariantChangeType 返回DISP_E_TYPEMISMATCH,则实现者会将 *puArgErr 设置为 0 (指示错误参数) ,并从 Invoke 返回DISP_E_TYPEMISMATCH。
使用此函数无法将一种类型的数组转换为另一种类型的数组。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | oleauto.h |
Library | OleAut32.lib |
DLL | OleAut32.dll |