VariantChangeTypeEx function (oleauto.h)
Important
This API is affected by the problem described in Microsoft Support topic VarI8FromCy produces incorrect value when CY value is very large.
Converts a variant from one type to another, using an LCID.
Syntax
HRESULT VariantChangeTypeEx(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[in] LCID lcid,
[in] USHORT wFlags,
[in] VARTYPE vt
);
Parameters
[out] pvargDest
The destination variant. If this is the same as pvarSrc, the variant will be converted in place.
[in] pvarSrc
The variant to convert.
[in] lcid
The locale identifier. The LCID is useful when the type of the source or destination VARIANTARG is VT_BSTR, VT_DISPATCH, or VT_DATE.
[in] wFlags
Flags.
[in] vt
The type to convert to. If the return code is S_OK, the vt field of the *pvargDest is guaranteed to be equal to this value.
Return value
This function can return one of these values.
Return code | Description |
---|---|
|
Success. |
|
The variant type is not a valid type of variant. |
|
The data pointed to by pvarSrc does not fit in the destination type. |
|
The argument could not be coerced to the specified type. |
|
One of the arguments is not valid. |
|
Insufficient memory to complete the operation. |
Remarks
The VariantChangeTypeEx function handles coercions between the fundamental types (including numeric-to-string and string-to-numeric coercions). A variant that has VT_BYREF set is coerced to a value by obtaining the referenced value. An object is coerced to a value by invoking the object's Value property (DISPID_VALUE).
Typically, the implementer of IDispatch::Invoke determines which member is being accessed, and then calls VariantChangeType to get the value of one or more arguments. For example, if the IDispatch call specifies a SetTitle member that takes one string argument, the implementer would call VariantChangeTypeEx to attempt to coerce the argument to VT_BSTR.
If VariantChangeTypeEx does not return an error, the argument could then be obtained directly from the bstrVal field of the VARIANTARG. If VariantChangeTypeEx returns DISP_E_TYPEMISMATCH, the implementer would set *puArgErr to 0 (indicating the argument in error) and return DISP_E_TYPEMISMATCH from IDispatch::Invoke.
Arrays of one type cannot be converted to arrays of another type with this function.
Requirements
Requirement | Value |
---|---|
Target Platform | Windows |
Header | oleauto.h |
Library | OleAut32.lib |
DLL | OleAut32.dll |