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