Compartilhar via


Classe COleVariant

Encapsula o tipo de dados VARIANT.

Sintaxe

class COleVariant : public tagVARIANT

Membros

Construtores públicos

Nome Descrição
COleVariant::COleVariant Constrói um objeto COleVariant.

Métodos públicos

Nome Descrição
COleVariant::Attach Anexa um VARIANT a um COleVariant.
COleVariant::ChangeType Altera o tipo variante desse objeto COleVariant.
COleVariant::Clear Limpa esse objeto COleVariant.
COleVariant::Detach Desanexa um VARIANT de um COleVariant e retorna o VARIANT.
COleVariant::GetByteArrayFromVariantArray Recupera uma matriz de bytes de uma matriz variante existente.
COleVariant::SetString Define a cadeia de caracteres como um tipo específico, normalmente ANSI.

Operadores públicos

Nome Descrição
COleVariant::operator LPCVARIANT Converte um valor COleVariant em um LPCVARIANT.
COleVariant::operator LPVARIANT Converte um objeto COleVariant em um LPVARIANT.
COleVariant::operator = Copia um valor COleVariant.
COleVariant::operator == Compara dois valores COleVariant.
COleVariant::operator <<, COleVariant::operator >> Gera um valor COleVariant para CArchive ou CDumpContext e insere um objeto COleVariant de CArchive.

Comentários

Esse tipo de dados é usado na automação OLE. Especificamente, a estrutura DISPPARAMS contém um ponteiro para uma matriz de estruturas VARIANT. Uma estrutura DISPPARAMS é usada para passar parâmetros para IDispatch::Invoke.

Observação

Essa classe é derivada da estrutura VARIANT. Isso significa que você pode passar um COleVariant em um parâmetro que exige um VARIANT e que os membros de dados da estrutura VARIANT são membros de dados acessíveis de COleVariant.

As duas classes de MFC relacionadas, COleCurrency e COleDateTime, encapsulam os tipos de dados variantes CURRENCY ( VT_CY) e DATE ( VT_DATE). A classe COleVariant é usada extensivamente nas classes DAO. Consulte essas classes para uso típico dessa classe, por exemplo, CDaoQueryDef e CDaoRecordset.

Para obter mais informações, confira as entradas VARIANT, CURRENCY, DISPPARAMS e IDispatch::Invoke no SDK do Windows.

Para obter mais informações sobre a classe COleVariant e seu uso na automação OLE, confira "Passar parâmetros na Automação OLE" no artigo Automação.

Hierarquia de herança

tagVARIANT

COleVariant

Requisitos

Cabeçalho afxdisp.h

COleVariant::Attach

Chame essa função para anexar o objeto VARIANT fornecido ao objeto COleVariant atual.

void Attach(VARIANT& varSrc);

Parâmetros

varSrc
Um objeto VARIANT existente a ser anexado ao objeto COleVariant atual.

Comentários

Essa função define o VARTYPE de varSrc como VT_EMPTY.

Para obter mais informações, confira as entradas VARIANT e VARENUM no SDK do Windows.

COleVariant::COleVariant

Constrói um objeto COleVariant.

COleVariant();
COleVariant(const VARIANT& varSrc);
COleVariant(const COleVariant& varSrc);
COleVariant(LPCVARIANT pSrc);
COleVariant(LPCTSTR lpszSrc);
COleVariant(LPCTSTR lpszSrc, VARTYPE vtSrc);
COleVariant(CString& strSrc);
COleVariant(BYTE nSrc);
COleVariant(short nSrc, VARTYPE vtSrc = VT_I2);
COleVariant(long lSrc,VARTYPE vtSrc = VT_I4);
COleVariant(const COleCurrency& curSrc);
COleVariant(float fltSrc);
COleVariant(double dblSrc);
COleVariant(const COleDateTime& timeSrc);
COleVariant(const CByteArray& arrSrc);
COleVariant(const CLongBinary& lbSrc);
COleVariant(LPCITEMIDLIST pidl);

Parâmetros

varSrc
Um objeto COleVariant ou VARIANT existente a ser copiado no novo objeto COleVariant.

pSrc
Um ponteiro para um objeto VARIANT que será copiado no novo objeto COleVariant.

lpszSrc
Uma cadeia de caracteres terminada em nulo a ser copiada para o novo objeto COleVariant.

vtSrc
O VARTYPE para o novo objeto COleVariant.

strSrc
Um objeto CString a ser copiado no novo objeto COleVariant.

nSrc, lSrc Um valor numérico a ser copiado no novo objeto COleVariant.

vtSrc
O VARTYPE para o novo objeto COleVariant.

curSrc
Um objeto COleCurrency a ser copiado no novo objeto COleVariant.

fltSrc, dblSrc
Um valor numérico a ser copiado no novo objeto COleVariant.

timeSrc
Um objeto COleDateTime a ser copiado no novo objeto COleVariant.

arrSrc
Um objeto CByteArray a ser copiado no novo objeto COleVariant.

lbSrc
Um objeto CLongBinary a ser copiado no novo objeto COleVariant.

pidl
Um ponteiro para uma estrutura ITEMIDLIST a ser copiada para o novo COleVariant objeto.

Comentários

Todos esses construtores criam objetos COleVariant inicializados para o valor especificado. Uma breve descrição de cada um desses construtores é mostrada abaixo.

  • COleVariant( ) Cria um objeto COleVariant vazio, VT_EMPTY.

  • COleVariant(varSrc) Copia um objeto VARIANT ou COleVariant existente. O tipo de variante é mantido.

  • COleVariant(pSrc) Copia um objeto VARIANT ou COleVariant existente. O tipo de variante é mantido.

  • COleVariant(lpszSrc) Copia uma cadeia de caracteres no novo objeto, VT_BSTR (UNICODE).

  • COleVariant(lpszSrc,vtSrc) Copia uma cadeia de caracteres no novo objeto. O parâmetro vtSrc deve ser VT_BSTR (UNICODE) ou VT_BSTRT (ANSI).

  • COleVariant(strSrc) Copia uma cadeia de caracteres no novo objeto, VT_BSTR (UNICODE).

  • COleVariant(nSrc) Copia um inteiro de 8 bits no novo objeto, VT_UI1.

  • COleVariant(nSrc,vtSrc) Copia um inteiro de 16 bits (ou valor booliano) no novo objeto. O parâmetro vtSrc deve ser VT_I2 ou VT_BOOL.

  • COleVariant(lSrc,vtSrc) Copia um inteiro de 32 bits (ou valor SCODE) no novo objeto. O parâmetro vtSrc deve ser VT_I4, VT_ERROR ou VT_BOOL.

  • COleVariant(curSrc) Copia um valor COleCurrency no novo objeto, VT_CY.

  • COleVariant(fltSrc) Copia um valor de ponto flutuante de 32 bits no novo objeto, VT_R4.

  • COleVariant(dblSrc) Copia um valor de ponto flutuante de 64 bits no novo objeto, VT_R8.

  • COleVariant(timeSrc) Copia um valor COleDateTime no novo objeto, VT_DATE.

  • COleVariant(arrSrc) Copia um objeto CByteArray no novo objeto, VT_EMPTY.

  • COleVariant(lbSrc) Copia um objeto CLongBinary no novo objeto, VT_EMPTY.

Para obter mais informações sobre o SCODE, confira Estrutura de códigos de erro COM no SDK do Windows.

COleVariant::ChangeType

Converte o tipo de valor variante neste objeto COleVariant.

void ChangeType(VARTYPE vartype, LPVARIANT pSrc = NULL);

Parâmetros

vartype
O VARTYPE desse objeto COleVariant.

pSrc
Um ponteiro para o objeto VARIANT a ser convertido. Se esse valor for NULL, esse objeto COleVariant será usado como a origem da conversão.

Comentários

Para obter mais informações, confira as entradas VARIANT, VARENUM e VariantChangeType no SDK do Windows.

COleVariant::Clear

Limpa o VARIANT.

void Clear();

Comentários

Isso define o VARTYPE para esse objeto como VT_EMPTY. O destruidor COleVariant chama essa função.

Para obter mais informações, confira as entradas VARIANT, VARTYPE e VariantClear no SDK do Windows.

COleVariant::Detach

Desanexa o objeto VARIANT subjacente deste objeto COleVariant.

VARIANT Detach();

Comentários

Essa função define o VARTYPE para esse COleVariant objeto como VT_EMPTY.

Observação

Depois de chamar Detach, é responsabilidade do chamador chamar VariantClear na estrutura VARIANT resultante.

Para obter mais informações, confira as entradas VARIANT, VARENUM e VariantClear no SDK do Windows.

COleVariant::GetByteArrayFromVariantArray

Recupera uma matriz de bytes de uma matriz variante existente

void GetByteArrayFromVariantArray(CByteArray& bytes);

Parâmetros

bytes
Uma referência a um objeto CByteArray existente.

COleVariant::operator LPCVARIANT

Esse operador de conversão retorna uma estrutura VARIANT cujo valor é copiado desse objeto COleVariant.

operator LPCVARIANT() const;

Comentários

COleVariant::operator LPVARIANT

Chame esse operador de conversão para acessar a estrutura VARIANT subjacente desse objeto COleVariant.

operator LPVARIANT();

Comentários

Cuidado

Alterar o valor na estrutura VARIANT acessada pelo ponteiro retornado por essa função alterará o valor desse objeto COleVariant.

COleVariant::operator =

Esses operadores de atribuição sobrecarregados copiam o valor de origem nesse objeto COleVariant.

const COleVariant& operator=(const VARIANT& varSrc);
const COleVariant& operator=(LPCVARIANT pSrc);
const COleVariant& operator=(const COleVariant& varSrc);
const COleVariant& operator=(const LPCTSTR lpszSrc);
const COleVariant& operator=(const CString& strSrc);
const COleVariant& operator=(BYTE nSrc);
const COleVariant& operator=(short nSrc);
const COleVariant& operator=(long lSrc);
const COleVariant& operator=(const COleCurrency& curSrc);
const COleVariant& operator=(float fltSrc);
const COleVariant& operator=(double dblSrc);
const COleVariant& operator=(const COleDateTime& dateSrc);
const COleVariant& operator=(const CByteArray& arrSrc);
const COleVariant& operator=(const CLongBinary& lbSrc);

Comentários

Uma breve descrição de cada operador é mostrada abaixo:

  • operator =(varSrc) Copia um VARIANT ou objeto COleVariant existente nesse objeto.

  • operator =(pSrc) Copia o objeto VARIANT acessado pelo pSrc nesse objeto.

  • operator =(lpszSrc) Copia uma cadeia de caracteres terminada em nulo nesse objeto e define o VARTYPE como VT_BSTR.

  • operator =(strSrc) Copia um objeto CString nesse objeto e define o VARTYPE como VT_BSTR.

  • operator =(nSrc) Copia um valor inteiro de 8 ou 16 bits nesse objeto. Se nSrc for um valor de 8 bits, o VARTYPE dele será definido como VT_UI1. Se nSrc for um valor de 16 bits e o VARTYPE dele for VT_BOOL, ele será mantido. Caso contrário, ele será definido como VT_I2.

  • operator =(lSrc) Copia um valor inteiro de 32 bits nesse objeto. Se o VARTYPE dele for VT_ERROR, ele será mantido. Caso contrário, ele será definido como VT_I4.

  • operator =(curSrc) Copia um objeto COleCurrency nesse objeto e define o VARTYPE como VT_CY.

  • operator =(fltSrc) Copia um valor de ponto flutuante de 32 bits nesse objeto e define o VARTYPE como VT_R4.

  • operator =(dblSrc) Copia um valor de ponto flutuante de 64 bits nesse objeto e define o VARTYPE como VT_R8.

  • operator =(dateSrc) Copia um objeto COleDateTime nesse objeto e define o VARTYPE como VT_DATE.

  • operator =(arrSrc) Copia um objeto CByteArray nesse objeto COleVariant.

  • operator =(lbSrc) Copia um objeto CLongBinary nesse objeto COleVariant.

Para obter mais informações, confira as entradas VARIANT e VARENUM no SDK do Windows.

COleVariant::operator ==

Esse operador compara dois valores variantes e retorna diferente de zero se iguais. Caso contrário, retorna 0.

BOOL operator==(const VARIANT& varSrc) const;
BOOL operator==(LPCVARIANT pSrc) const;

COleVariant::operator <<, COleVariant::operator >>

Gera um valor COleVariant para CArchive ou CdumpContext e insere um objeto COleVariant de CArchive.

friend CDumpContext& AFXAPI operator<<(
    CDumpContext& dc,
    OleVariant varSrc);

friend CArchive& AFXAPI operator<<(
    CArchive& ar,
    COleVariant varSrc);

friend CArchive& AFXAPI operator>>(
    CArchive& ar,
    COleVariant& varSrc);

Comentários

O operador de inserção COleVariant (<<) dá suporte ao despejo de diagnóstico e ao armazenamento em um arquivo. O operador de extração (>>) dá suporte ao carregamento de um arquivo.

COleVariant::SetString

Define a cadeia de caracteres como um tipo específico.

void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc);

Parâmetros

lpszSrc
Uma cadeia de caracteres terminada em nulo a ser copiada para o novo objeto COleVariant.

VtSrc
O VARTYPE para o novo objeto COleVariant.

Comentários

O parâmetro vtSrc deve ser VT_BSTR (UNICODE) ou VT_BSTRT (ANSI). SetString normalmente é usado para definir cadeias de caracteres como ANSI, já que o padrão para o construtor COleVariant::COleVariant com um parâmetro de ponteiro de cadeia de caracteres ou cadeia de caracteres e nenhum VARTYPE é UNICODE.

Um conjunto de registros DAO em um build não UNICODE espera que as cadeias de caracteres sejam ANSI. Assim, para funções DAO que usam objetos COleVariant, se você não estiver criando um conjunto de registros UNICODE, deverá usar a forma de construtor COleVariant::COleVariant(lpszSrc,vtSrc) com vtSrc definido como VT_BSTRT (ANSI) ou usar SetString com vtSrc definido como VT_BSTRT para criar cadeias de caracteres ANSI. Por exemplo, as funções CDaoRecordsetCDaoRecordset::Seek e CDaoRecordset::SetFieldValue usam objetos COleVariant como parâmetros. Esses objetos deverão ser ANSI se o conjunto de registros DAO não for UNICODE.

Confira também

Gráfico da hierarquia