Fonction VariantChangeType (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.
Syntaxe
HRESULT VariantChangeType(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[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] 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. |
Remarques
La fonction VariantChangeType gère les contraintes entre les types fondamentaux (y compris les contraintes de type numérique à chaîne et de chaîne à chaîne). L’argument pvarSrc est modifié pendant le processus de conversion. Par exemple, si la variante source est de type VT_BOOL et que la destination est de type VT_UINT, l’argument pvarSrc est d’abord converti en VT_I2, puis la conversion continue. 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 VariantChangeType pour tenter de contraindre l’argument à VT_BSTR. Si VariantChangeType ne retourne pas d’erreur, l’argument peut alors être obtenu directement à partir du champ bstrVal du VARIANTARG. Si VariantChangeType retourne DISP_E_TYPEMISMATCH, l’implémenteur définit *puArgErr sur 0 (indiquant l’argument dans une erreur) et retourne DISP_E_TYPEMISMATCH à partir d’Invoke.
Les tableaux d’un type ne peuvent pas être convertis en tableaux d’un autre type avec cette fonction.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | oleauto.h |
Bibliothèque | OleAut32.lib |
DLL | OleAut32.dll |