Partager via


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.

Valeur Signification
VARIANT_NOVALUEPROP
Empêche la fonction de tenter de contraindre un objet à un type fondamental en obtenant la propriété Value. Les applications doivent définir cet indicateur uniquement si nécessaire, car cela rend leur comportement incohérent avec d’autres applications.
VARIANT_ALPHABOOL
Convertit une valeur VT_BOOL en chaîne contenant « True » ou « False ».
VARIANT_NOUSEROVERRIDE
Pour les conversions vers ou à partir de VT_BSTR, passe LOCALE_NOUSEROVERRIDE aux routines de forçage principales.
VARIANT_LOCALBOOL
Pour les conversions de VT_BOOL en VT_BSTR et retour arrière, utilise la langue spécifiée par les paramètres régionaux en cours d’utilisation sur l’ordinateur local.

[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
S_OK
Réussite.
DISP_E_BADVARTYPE
Le type de variant n’est pas un type valide de variant.
DISP_E_OVERFLOW
Les données pointées par pvarSrc ne correspondent pas au type de destination.
DISP_E_TYPEMISMATCH
Impossible de contraindre l’argument au type spécifié.
E_INVALIDARG
L’un des arguments n’est pas valide.
E_OUTOFMEMORY
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.

Note Le type d’un VARIANTARG ne doit pas être modifié dans le tableau rgvarg en place.
 

Configuration requise

   
Plateforme cible Windows
En-tête oleauto.h
Bibliothèque OleAut32.lib
DLL OleAut32.dll

Voir aussi

Fonctions de manipulation de variantes

VariantChangeType