Função VariantChangeType (oleauto.h)
Importante
Essa API é afetada pelo problema descrito em Suporte da Microsoft tópico VarI8FromCy produz um valor incorreto quando o valor cy é muito grande.
Converte uma variante de um tipo para outro.
Sintaxe
HRESULT VariantChangeType(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[in] USHORT wFlags,
[in] VARTYPE vt
);
Parâmetros
[out] pvargDest
A variante de destino. Se isso for o mesmo que pvarSrc, a variante será convertida em vigor.
[in] pvarSrc
A variante a ser convertida.
[in] wFlags
Sinalizadores.
[in] vt
O tipo para o qual converter. Se o código de retorno for S_OK, o campo vt do *pvargDest será igual a esse valor.
Retornar valor
Essa função pode retornar um desses valores.
Código de retorno | Descrição |
---|---|
|
Êxito. |
|
O tipo variante não é um tipo válido de variante. |
|
Os dados apontados por pvarSrc não se encaixam no tipo de destino. |
|
O argumento não pôde ser coagido ao tipo especificado. |
|
Um dos argumentos não é válido. |
|
Memória insuficiente para concluir a operação. |
Comentários
A função VariantChangeType manipula coerções entre os tipos fundamentais (incluindo coerções numéricas para cadeia de caracteres e cadeia de caracteres para numéricas). O argumento pvarSrc é alterado durante o processo de conversão. Por exemplo, se a variante de origem for do tipo VT_BOOL e o destino for do tipo VT_UINT, o argumento pvarSrc será convertido primeiro em VT_I2 e, em seguida, a conversão continuará. Uma variante que tem VT_BYREF conjunto é coagida a um valor obtendo o valor referenciado. Um objeto é coagido a um valor invocando a propriedade Value do objeto (DISPID_VALUE).
Normalmente, o implementador de IDispatch::Invoke determina qual membro está sendo acessado e, em seguida, chama VariantChangeType para obter o valor de um ou mais argumentos. Por exemplo, se a chamada IDispatch especificar um membro SetTitle que usa um argumento de cadeia de caracteres, o implementador chamará VariantChangeType para tentar coagir o argumento a VT_BSTR. Se VariantChangeType não retornar um erro, o argumento poderá ser obtido diretamente do campo bstrVal do VARIANTARG. Se VariantChangeType retornar DISP_E_TYPEMISMATCH, o implementador definirá *puArgErr como 0 (indicando o argumento em erro) e retornará DISP_E_TYPEMISMATCH de Invoke.
Matrizes de um tipo não podem ser convertidas em matrizes de outro tipo com essa função.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | oleauto.h |
Biblioteca | OleAut32.lib |
DLL | OleAut32.dll |