Compartilhar via


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.

Valor Significado
VARIANT_NOVALUEPROP
Impede que a função tente coagir um objeto a um tipo fundamental obtendo a propriedade Value. Os aplicativos devem definir esse sinalizador somente se necessário, pois isso torna seu comportamento inconsistente com outros aplicativos.
VARIANT_ALPHABOOL
Converte um valor VT_BOOL em uma cadeia de caracteres que contém "True" ou "False".
VARIANT_NOUSEROVERRIDE
Para conversões de ou para VT_BSTR, passa LOCALE_NOUSEROVERRIDE para as rotinas principais de coerção.
VARIANT_LOCALBOOL
Para conversões de VT_BOOL para VT_BSTR e voltar, usa o idioma especificado pela localidade em uso no computador local.

[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
S_OK
Êxito.
DISP_E_BADVARTYPE
O tipo variante não é um tipo válido de variante.
DISP_E_OVERFLOW
Os dados apontados por pvarSrc não se encaixam no tipo de destino.
DISP_E_TYPEMISMATCH
O argumento não pôde ser coagido ao tipo especificado.
E_INVALIDARG
Um dos argumentos não é válido.
E_OUTOFMEMORY
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.

Nota O tipo de um VARIANTARG não deve ser alterado na matriz rgvarg em vigor.
 

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho oleauto.h
Biblioteca OleAut32.lib
DLL OleAut32.dll

Confira também

Funções de manipulação variantes

Variantchangetypeex