Funzione VariantChangeType (oleauto.h)
Importante
Questa API è interessata dal problema descritto in supporto tecnico Microsoft argomento VarI8FromCy produce un valore non corretto quando il valore CY è molto grande.
Converte una variante da un tipo a un altro.
Sintassi
HRESULT VariantChangeType(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[in] USHORT wFlags,
[in] VARTYPE vt
);
Parametri
[out] pvargDest
Variante di destinazione. Se si tratta dello stesso valore di pvarSrc, la variante verrà convertita sul posto.
[in] pvarSrc
Variante da convertire.
[in] wFlags
Bandiere.
[in] vt
Tipo in cui eseguire la conversione. Se il codice restituito è S_OK, il campo vt di *pvargDest è garantito che sia uguale a questo valore.
Valore restituito
Questa funzione può restituire uno di questi valori.
Codice restituito | Descrizione |
---|---|
|
Operazione completata. |
|
Il tipo variant non è un tipo valido di variant. |
|
I dati a cui punta pvarSrc non rientrano nel tipo di destinazione. |
|
Impossibile forzare l'argomento al tipo specificato. |
|
Uno degli argomenti non è valido. |
|
Memoria insufficiente per completare l'operazione. |
Commenti
La funzione VariantChangeType gestisce le coercizioni tra i tipi fondamentali (incluse le coercizioni da numerica a stringa e da stringa a numerica). L'argomento pvarSrc viene modificato durante il processo di conversione. Ad esempio, se la variante di origine è di tipo VT_BOOL e la destinazione è di tipo VT_UINT, l'argomento pvarSrc viene prima convertito in VT_I2 e quindi la conversione procede. Una variante con VT_BYREF set viene forzata su un valore ottenendo il valore a cui si fa riferimento. Un oggetto viene assegnato a un valore richiamando la proprietà Value dell'oggetto (DISPID_VALUE).
In genere, l'implementatore di IDispatch::Invoke determina il membro a cui si accede e quindi chiama VariantChangeType per ottenere il valore di uno o più argomenti. Ad esempio, se la chiamata IDispatch specifica un membro SetTitle che accetta un argomento stringa, l'implementatore chiamerà VariantChangeType per tentare di forzare l'argomento per VT_BSTR. Se VariantChangeType non restituisce un errore, è possibile ottenere l'argomento direttamente dal campo bstrVal di VARIANTARG. Se VariantChangeType restituisce DISP_E_TYPEMISMATCH, l'implementatore imposterà *puArgErr su 0 (che indica l'argomento in errore) e restituirà DISP_E_TYPEMISMATCH da Invoke.
Le matrici di un tipo non possono essere convertite in matrici di un altro tipo con questa funzione.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | oleauto.h |
Libreria | OleAut32.lib |
DLL | OleAut32.dll |