VariantChangeType
9/8/2008
Essa função converte uma variante de um tipo para outro.
Syntax
HRESULT VariantChangeType(
VARIANTARG FAR* pvargDest,
VARIANTARG FAR* pvarSrc,
unsigned short wFlags,
VARTYPE vt
);
Parameters
- pvargDest
[out] Ponteiro para o VarBoolFromDisp Para receber o tipo coagido. Se esse for o mesmo pvarSrc, a variante é convertido em local.
- pvarSrc
[no] Ponteiro para a origem VARIANTARG Para ser forçados.
wFlags
[no] Sinaliza que controle a coercion.O sinalizador Definição somente é VARIANT_NOVALUEPROP, o que impede a função tentando coagir um objeto para um tipo fundamental por obter a propriedade Value.
Aplicativos Defina esse sinalizador somente se necessário, pois ele torna seu comportamento inconsistente com outros aplicativos.
- VT
[no] Especifica o tipo para coagir para. Se o código de retorno é S_OK, o VT membro das VARIANTARG especificado pelo *pvargDest é o mesmo que esse valor.
Return Value
Retorna os valores HRESULT mostrados a seguinte tabela.
Valor | Descrição |
---|---|
S_OK |
O sucesso. |
DISP_E_BADVARTYPE |
A variante tipo VT não é um válido tipo de variante. |
DISP_E_OVERFLOW |
Os dados apontados pelo pvarSrc não é adequado no tipo de destino. |
DISP_E_TYPEMISMATCH |
O argumento não pôde ser forçado para o tipo especificado. |
E_INVALIDARG |
Um argumento é inválido. |
E_OUTOFMEMORY |
Não foi possível alocar memória para a conversão. |
Remarks
Passagem inválido (e, em algumas circunstâncias NULL) ponteiros para essa função faz com que uma terminação inesperada do aplicativo.
O VariantChangeType função manipula coercions entre os tipos fundamentais (incluindo numérico - para - seqüência de caracteres e coercions seqüência-para-numérico).
Uma variante que tenha VT_BYREF definido é forçado para um valor por obtendo o relacionado valor. Um objeto é forçado para um valor invocando o objeto Valor propriedade (DISPID_VALUE).
Normalmente, o implementador de IDispatch::Invoke Determina qual membro está sendo acessado e, em seguida, chama VariantChangeType Para o valor de um ou mais argumentos get.
De exemplo, se a IDispatch chamar especifica um SetTitle membro que leva um argumento string, o implementador poderia chamar VariantChangeType Para tentar coagir o argumento para VT_BSTR.
Se VariantChangeType não retornar um erro, o argumento, em seguida, poderia ser obtido diretamente das bstrVal membro das VARIANTARG.
Se VariantChangeType Retorna DISP_E_TYPEMISMATCH, o implementor definiria *puArgErr para 0 (indicando o argumento em erro) e retornar DISP_E_TYPEMISMATCH de IDispatch::Invoke.
Matrizes de um tipo não podem ser convertidos para matrizes de outro tipo com essa função.
O tipo de uma VARIANTARG não deve ser alterado na rgvarg matriz no local.
Requirements
Header | oleauto.h |
Library | oleaut32.lib |
Windows Embedded CE | Windows CE 2.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |
See Also
Reference
Automation Functions
VarBoolFromDisp
VARIANT and VARIANTARG
IDispatch::Invoke
IDispatch