COleVariant Class
Encapsulates the VARIANT data type.
Syntax
class COleVariant : public tagVARIANT
Members
Public Constructors
Name | Description |
---|---|
COleVariant::COleVariant | Constructs a COleVariant object. |
Public Methods
Name | Description |
---|---|
COleVariant::Attach | Attaches a VARIANT to a COleVariant . |
COleVariant::ChangeType | Changes the variant type of this COleVariant object. |
COleVariant::Clear | Clears this COleVariant object. |
COleVariant::Detach | Detaches a VARIANT from a COleVariant and returns the VARIANT. |
COleVariant::GetByteArrayFromVariantArray | Retrieves a byte array from an existing variant array. |
COleVariant::SetString | Sets the string to a particular type, typically ANSI. |
Public Operators
Name | Description |
---|---|
COleVariant::operator LPCVARIANT | Converts a COleVariant value into an LPCVARIANT . |
COleVariant::operator LPVARIANT | Converts a COleVariant object into an LPVARIANT . |
COleVariant::operator = | Copies a COleVariant value. |
COleVariant::operator == | Compares two COleVariant values. |
COleVariant::operator << , COleVariant::operator >> |
Outputs a COleVariant value to CArchive or CDumpContext and inputs a COleVariant object from CArchive . |
Remarks
This data type is used in OLE automation. Specifically, the DISPPARAMS structure contains a pointer to an array of VARIANT structures. A DISPPARAMS
structure is used to pass parameters to IDispatch::Invoke.
Note
This class is derived from the VARIANT
structure. This means you can pass a COleVariant
in a parameter that calls for a VARIANT
and that the data members of the VARIANT
structure are accessible data members of COleVariant
.
The two related MFC classes COleCurrency and COleDateTime encapsulate the variant data types CURRENCY ( VT_CY
) and DATE ( VT_DATE
). The COleVariant
class is used extensively in the DAO classes; see these classes for typical usage of this class, for example CDaoQueryDef and CDaoRecordset.
For more information, see the VARIANT, CURRENCY, DISPPARAMS, and IDispatch::Invoke entries in the Windows SDK.
For more information on the COleVariant
class and its use in OLE automation, see "Passing Parameters in OLE Automation" in the article Automation.
Inheritance Hierarchy
tagVARIANT
COleVariant
Requirements
Header: afxdisp.h
COleVariant::Attach
Call this function to attach the given VARIANT object to the current COleVariant
object.
void Attach(VARIANT& varSrc);
Parameters
varSrc
An existing VARIANT
object to be attached to the current COleVariant
object.
Remarks
This function sets the VARTYPE of varSrc to VT_EMPTY.
For more information, see the VARIANT and VARENUM entries in the Windows SDK.
COleVariant::COleVariant
Constructs a COleVariant
object.
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);
Parameters
varSrc
An existing COleVariant
or VARIANT
object to be copied into the new COleVariant
object.
pSrc
A pointer to a VARIANT
object that will be copied into the new COleVariant
object.
lpszSrc
A null-terminated string to be copied into the new COleVariant
object.
vtSrc
The VARTYPE
for the new COleVariant
object.
strSrc
A CString object to be copied into the new COleVariant
object.
nSrc, lSrc
A numerical value to be copied into the new COleVariant
object.
vtSrc
The VARTYPE
for the new COleVariant
object.
curSrc
A COleCurrency object to be copied into the new COleVariant
object.
fltSrc, dblSrc
A numerical value to be copied into the new COleVariant
object.
timeSrc
A COleDateTime object to be copied into the new COleVariant
object.
arrSrc
A CByteArray object to be copied into the new COleVariant
object.
lbSrc
A CLongBinary object to be copied into the new COleVariant
object.
pidl
A pointer to an ITEMIDLIST structure to be copied into the new COleVariant
object.
Remarks
All these constructors create new COleVariant
objects initialized to the specified value. A brief description of each of these constructors follows.
COleVariant( ) Creates an empty
COleVariant
object, VT_EMPTY.COleVariant( varSrc ) Copies an existing
VARIANT
orCOleVariant
object. The variant type is retained.COleVariant( pSrc ) Copies an existing
VARIANT
orCOleVariant
object. The variant type is retained.COleVariant( lpszSrc ) Copies a string into the new object, VT_BSTR (UNICODE).
COleVariant( lpszSrc , vtSrc ) Copies a string into the new object. The parameter vtSrc must be VT_BSTR (UNICODE) or VT_BSTRT (ANSI).
COleVariant( strSrc ) Copies a string into the new object, VT_BSTR (UNICODE).
COleVariant( nSrc ) Copies an 8-bit integer into the new object, VT_UI1.
COleVariant( nSrc , vtSrc ) Copies a 16-bit integer (or Boolean value) into the new object. The parameter vtSrc must be VT_I2 or VT_BOOL.
COleVariant( lSrc , vtSrc ) Copies a 32-bit integer (or SCODE value) into the new object. The parameter vtSrc must be VT_I4, VT_ERROR, or VT_BOOL.
COleVariant( curSrc ) Copies a
COleCurrency
value into the new object, VT_CY.COleVariant( fltSrc ) Copies a 32-bit floating-point value into the new object, VT_R4.
COleVariant( dblSrc ) Copies a 64-bit floating-point value into the new object, VT_R8.
COleVariant( timeSrc ) Copies a
COleDateTime
value into the new object, VT_DATE.COleVariant( arrSrc ) Copies a
CByteArray
object into the new object, VT_EMPTY.COleVariant( lbSrc ) Copies a
CLongBinary
object into the new object, VT_EMPTY.
For more information on SCODE, see Structure of COM Error Codes in the Windows SDK.
COleVariant::ChangeType
Converts the type of variant value in this COleVariant
object.
void ChangeType(VARTYPE vartype, LPVARIANT pSrc = NULL);
Parameters
vartype
The VARTYPE for this COleVariant
object.
pSrc
A pointer to the VARIANT object to be converted. If this value is NULL, this COleVariant
object is used as the source for the conversion.
Remarks
For more information, see the VARIANT, VARENUM, and VariantChangeType entries in the Windows SDK.
COleVariant::Clear
Clears the VARIANT
.
void Clear();
Remarks
This sets the VARTYPE for this object to VT_EMPTY. The COleVariant
destructor calls this function.
For more information, see the VARIANT
, VARTYPE, and VariantClear
entries in the Windows SDK.
COleVariant::Detach
Detaches the underlying VARIANT object from this COleVariant
object.
VARIANT Detach();
Remarks
This function sets the VARTYPE for this COleVariant
object to VT_EMPTY.
Note
After calling Detach
, it is the caller's responsibility to call VariantClear
on the resulting VARIANT
structure.
For more information, see the VARIANT, VARENUM, and VariantClear entries in the Windows SDK.
COleVariant::GetByteArrayFromVariantArray
Retrieves a byte array from an existing variant array
void GetByteArrayFromVariantArray(CByteArray& bytes);
Parameters
bytes
A reference to an existing CByteArray object.
COleVariant::operator LPCVARIANT
This casting operator returns a VARIANT
structure whose value is copied from this COleVariant
object.
operator LPCVARIANT() const;
Remarks
COleVariant::operator LPVARIANT
Call this casting operator to access the underlying VARIANT
structure for this COleVariant
object.
operator LPVARIANT();
Remarks
Caution
Changing the value in the VARIANT
structure accessed by the pointer returned by this function will change the value of this COleVariant
object.
COleVariant::operator =
These overloaded assignment operators copy the source value into this COleVariant
object.
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);
Remarks
A brief description of each operator follows:
operator =( varSrc ) Copies an existing VARIANT or
COleVariant
object into this object.operator =( pSrc ) Copies the VARIANT object accessed by pSrc into this object.
operator =( lpszSrc ) Copies a null-terminated string into this object and sets the VARTYPE to VT_BSTR.
operator =( strSrc ) Copies a CString object into this object and sets the VARTYPE to VT_BSTR.
operator =( nSrc ) Copies an 8- or 16-bit integer value into this object. If nSrc is an 8-bit value, the VARTYPE of this is set to VT_UI1. If nSrc is a 16-bit value and the VARTYPE of this is VT_BOOL, it is kept; otherwise, it is set to VT_I2.
operator =( lSrc ) Copies a 32-bit integer value into this object. If the VARTYPE of this is VT_ERROR, it is kept; otherwise, it is set to VT_I4.
operator =( curSrc ) Copies a COleCurrency object into this object and sets the VARTYPE to VT_CY.
operator =( fltSrc ) Copies a 32-bit floating-point value into this object and sets the VARTYPE to VT_R4.
operator =( dblSrc ) Copies a 64-bit floating-point value into this object and sets the VARTYPE to VT_R8.
operator =( dateSrc ) Copies a COleDateTime object into this object and sets the VARTYPE to VT_DATE.
operator =( arrSrc ) Copies a CByteArray object into this
COleVariant
object.operator =( lbSrc ) Copies a CLongBinary object into this
COleVariant
object.
For more information, see the VARIANT and VARENUM entries in the Windows SDK.
COleVariant::operator ==
This operator compares two variant values and returns nonzero if they are equal; otherwise 0.
BOOL operator==(const VARIANT& varSrc) const;
BOOL operator==(LPCVARIANT pSrc) const;
COleVariant::operator <<
, COleVariant::operator >>
Outputs a COleVariant
value to CArchive
or CdumpContext
and inputs a COleVariant
object from 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);
Remarks
The COleVariant
insertion (<<) operator supports diagnostic dumping and storing to an archive. The extraction (>>) operator supports loading from an archive.
COleVariant::SetString
Sets the string to a particular type.
void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc);
Parameters
lpszSrc
A null-terminated string to be copied into the new COleVariant
object.
VtSrc
The VARTYPE for the new COleVariant
object.
Remarks
The parameter vtSrc must be VT_BSTR (UNICODE) or VT_BSTRT (ANSI). SetString
is typically used to set strings to ANSI, since the default for the COleVariant::COleVariant constructor with a string or string pointer parameter and no VARTYPE is UNICODE.
A DAO recordset in a non-UNICODE build expects strings to be ANSI. Thus, for DAO functions that use COleVariant
objects, if you are not creating a UNICODE recordset, you must use the COleVariant::COleVariant( lpszSrc , vtSrc ) form of constructor with vtSrc set to VT_BSTRT (ANSI) or use SetString
with vtSrc set to VT_BSTRT to make ANSI strings. For example, the CDaoRecordset
functions CDaoRecordset::Seek and CDaoRecordset::SetFieldValue use COleVariant
objects as parameters. These objects must be ANSI if the DAO recordset is not UNICODE.