VariantChangeTypeEx 函数 (oleauto.h)

使用 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

标志。

含义
VARIANT_NOVALUEPROP
通过获取 Value 属性,防止函数尝试将对象强制转换为基本类型。 应用程序应仅在必要时设置此标志,因为这会使应用程序的行为与其他应用程序不一致。
VARIANT_ALPHABOOL
将VT_BOOL值转换为包含“True”或“False”的字符串。
VARIANT_NOUSEROVERRIDE
对于与VT_BSTR的转换,将LOCALE_NOUSEROVERRIDE传递到核心强制例程。
VARIANT_LOCALBOOL
对于从VT_BOOL到VT_BSTR和返回的转换,请使用在本地计算机上使用的区域设置指定的语言。

[in] vt

要转换为的类型。 如果返回代码S_OK,则 *pvargDestvt 字段保证等于此值。

返回值

此函数可以返回其中一个值。

返回代码 说明
S_OK
成功。
DISP_E_BADVARTYPE
变体类型不是有效的变体类型。
DISP_E_OVERFLOW
pvarSrc 指向的数据不适合目标类型。
DISP_E_TYPEMISMATCH
无法将 参数强制设置为指定的类型。
E_INVALIDARG
其中一个参数无效。
E_OUTOFMEMORY
内存不足,无法完成操作。

注解

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。

一种类型的数组不能使用此函数转换为另一种类型的数组。

注意 不应在 rgvarg 数组中更改 VARIANTARG 的类型。
 

要求

   
目标平台 Windows
标头 oleauto.h
Library OleAut32.lib
DLL OleAut32.dll

请参阅

变体操作函数

VariantChangeType