Fonction VariantChangeTypeEx (oleauto.h)
Important
Cette API est affectée par le problème décrit dans Support Microsoft rubrique VarI8FromCy produit une valeur incorrecte lorsque la valeur CY est très grande.
Convertit une variante d’un type en un autre, à l’aide d’un LCID.
Syntaxe
HRESULT VariantChangeTypeEx(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[in] LCID lcid,
[in] USHORT wFlags,
[in] VARTYPE vt
);
Paramètres
[out] pvargDest
Variante de destination. S’il s’agit de la même valeur que pvarSrc, la variante est convertie sur place.
[in] pvarSrc
Variante à convertir.
[in] lcid
Identificateur de paramètres régionaux. Le LCID est utile lorsque le type du VARIANTARG source ou de destination est VT_BSTR, VT_DISPATCH ou VT_DATE.
[in] wFlags
Drapeaux.
[in] vt
Type vers lequel effectuer la conversion. Si le code de retour est S_OK, le champ vt du *pvargDest est garanti égal à cette valeur.
Valeur retournée
Cette fonction peut retourner l’une de ces valeurs.
Code de retour | Description |
---|---|
|
Réussite. |
|
Le type de variant n’est pas un type valide de variant. |
|
Les données pointées par pvarSrc ne correspondent pas au type de destination. |
|
Impossible de contraindre l’argument au type spécifié. |
|
L’un des arguments n’est pas valide. |
|
Mémoire insuffisante pour terminer l’opération. |
Notes
La fonction VariantChangeTypeEx gère les contraintes entre les types fondamentaux (y compris les forçages de type numérique à chaîne et de chaîne à numérique). Une variante qui a VT_BYREF jeu est convertie en une valeur en obtenant la valeur référencée. Un objet est converti en une valeur en appelant la propriété Value de l’objet (DISPID_VALUE).
En règle générale, l’implémenteur de IDispatch::Invoke détermine le membre auquel vous accédez, puis appelle VariantChangeType pour obtenir la valeur d’un ou de plusieurs arguments. Par exemple, si l’appel IDispatch spécifie un membre SetTitle qui prend un argument de chaîne, l’implémenteur appelle VariantChangeTypeEx pour tenter de contraindre l’argument à VT_BSTR.
Si VariantChangeTypeEx ne retourne pas d’erreur, l’argument peut alors être obtenu directement à partir du champ bstrVal du VARIANTARG. Si VariantChangeTypeEx retourne DISP_E_TYPEMISMATCH, l’implémenteur définit *puArgErr sur 0 (indiquant l’argument en erreur) et retourne DISP_E_TYPEMISMATCH à partir de IDispatch::Invoke.
Les tableaux d’un type ne peuvent pas être convertis en tableaux d’un autre type avec cette fonction.
Configuration requise
Plateforme cible | Windows |
En-tête | oleauto.h |
Bibliothèque | OleAut32.lib |
DLL | OleAut32.dll |