Compartilhar via


Função VariantChangeTypeEx (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, usando um LCID.

Sintaxe

HRESULT VariantChangeTypeEx(
  [out] VARIANTARG       *pvargDest,
  [in]  const VARIANTARG *pvarSrc,
  [in]  LCID             lcid,
  [in]  USHORT           wFlags,
  [in]  VARTYPE          vt
);

Parâmetros

[out] pvargDest

A variante de destino. Se for o mesmo que pvarSrc, a variante será convertida no local.

[in] pvarSrc

A variante a ser convertida.

[in] lcid

O identificador de localidade. O LCID é útil quando o tipo do VARIANTARG de origem ou destino é VT_BSTR, VT_DISPATCH ou VT_DATE.

[in] wFlags

Sinalizadores.

Valor Significado
VARIANT_NOVALUEPROP
Impede que a função tente forçar 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 de coerção principais.
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á garantido como igual a esse valor.

Valor retornado

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 para o 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 VariantChangeTypeEx lida com coerções entre os tipos fundamentais (incluindo coerções numéricas para cadeias de caracteres e cadeia de caracteres para numéricas). 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á VariantChangeTypeEx para tentar forçar o argumento a VT_BSTR.

Se VariantChangeTypeEx não retornar um erro, o argumento poderá ser obtido diretamente do campo bstrVal do VARIANTARG. Se VariantChangeTypeEx retornar DISP_E_TYPEMISMATCH, o implementador definirá *puArgErr como 0 (indicando o argumento em erro) e retornará DISP_E_TYPEMISMATCH de IDispatch::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

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

Confira também

Funções de manipulação de variantes

Variantchangetype