Share via


COleVariant 类

封装 VARIANT 数据类型。

语法

class COleVariant : public tagVARIANT

成员

公共构造函数

名称 描述
COleVariant::COleVariant 构造 COleVariant 对象。

公共方法

名称 描述
COleVariant::Attach 将 VARIANT 附加到 COleVariant
COleVariant::ChangeType 更改此 COleVariant 对象的变体类型。
COleVariant::Clear 清除此 COleVariant 对象。
COleVariant::Detach COleVariant 分离 VARIANT 并返回该 VARIANT。
COleVariant::GetByteArrayFromVariantArray 从现有变体数组中检索字节数组。
COleVariant::SetString 将字符串设置为特定的类型(通常为 ANSI)。

公共运算符

“属性” 描述
COleVariant::operator LPCVARIANT COleVariant 值转换为 LPCVARIANT
COleVariant::operator LPVARIANT COleVariant 对象转换为 LPVARIANT
COleVariant::operator = 复制 COleVariant 值。
COleVariant::operator == 比较两个 COleVariant 值。
COleVariant::operator <<, COleVariant::operator >> COleVariant 值输出到 CArchiveCDumpContext,并从 CArchive 输入 COleVariant 对象。

注解

此数据类型在 OLE 自动化中使用。 具体而言,DISPPARAMS 结构包含一个指向 VARIANT 结构数组的指针。 DISPPARAMS 结构用于将参数传递给 IDispatch::Invoke

注意

此类派生自 VARIANT 结构。 这意味着可以在参数中传入 COleVariant,该参数调用 VARIANT,并且 VARIANT 结构的数据成员是 COleVariant 的可访问的数据成员。

两个相关的 MFC 类 COleCurrencyCOleDateTime 封装变体数据类型 CURRENCY (VT_CY) 和 DATE (VT_DATE)。 COleVariant 类在 DAO 类中广泛使用;有关此类的典型用法,请参阅 CDaoQueryDefCDaoRecordset 类的示例。

有关详细信息,请参阅 Windows SDK 中的 VARIANTCURRENCYDISPPARAMSIDispatch::Invoke 条目。

有关 COleVariant 类及其在 OLE 自动化中的用法的详细信息,请参阅自动化一文中的“在 OLE 自动化中传递参数”。

继承层次结构

tagVARIANT

COleVariant

要求

标头:afxdisp.h

COleVariant::Attach

调用此函数可将给定的 VARIANT 对象附加到当前的 COleVariant 对象。

void Attach(VARIANT& varSrc);

参数

varSrc
要附加到当前 COleVariant 对象的现有 VARIANT 对象。

备注

此函数将 varSrc 的 VARTYPE 设置为 VT_EMPTY

有关详细信息,请参阅 Windows SDK 中的 VARIANTVARENUM 条目。

COleVariant::COleVariant

构造 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);

参数

varSrc
要复制到新 COleVariant 对象中的现有 COleVariantVARIANT 对象。

pSrc
指示要复制到新 COleVariant 对象中的 VARIANT 对象的指针。

lpszSrc
要复制到新 COleVariant 对象中的以 null 结尾的字符串。

vtSrc
COleVariant 对象的 VARTYPE

strSrc
要复制到新的 COleVariant 对象中的 CString 对象。

nSrc、lSrc:要复制到新 COleVariant 对象中的数值

vtSrc
COleVariant 对象的 VARTYPE

curSrc
要复制到新 COleVariant 对象中的 COleCurrency 对象。

fltSrc、dblSrc
要复制到新的 COleVariant 对象中的数值。

timeSrc
要复制到新 COleVariant 对象中的 COleDateTime 对象。

arrSrc
要复制到新 COleVariant 对象中的 CByteArray 对象。

lbSrc
要复制到新 COleVariant 对象中的 CLongBinary 对象。

pidl
指向要复制到新 COleVariant 对象中的 ITEMIDLIST 结构的指针。

注解

所有这些构造函数将创建初始化为指定值的新 COleVariant 对象。 下面是其中每个构造函数的简要说明。

  • COleVariant() 创建空的 COleVariant 对象 VT_EMPTY

  • COleVariant(varSrc) 复制现有的 VARIANTCOleVariant 对象。 变体类型将保留。

  • COleVariant(pSrc) 复制现有的 VARIANTCOleVariant 对象。 变体类型将保留。

  • COleVariant(lpszSrc) 将字符串复制到新对象 VT_BSTR (UNICODE) 中

  • COleVariant(lpszSrc,vtSrc) 将字符串复制到新对象中。 参数 vtSrc 必须是 VT_BSTR (UNICODE) 或 VT_BSTRT (ANSI)

  • COleVariant(strSrc) 将字符串复制到新对象 VT_BSTR (UNICODE) 中

  • COleVariant(nSrc) 将 8 位整数复制到新对象 VT_UI1 中

  • COleVariant(nSrc,vtSrc) 将 16 位整数(或布尔值)复制到新对象中。 参数 vtSrc 必须是 VT_I2 或 VT_BOOL

  • COleVariant(lSrc,vtSrc) 将 32 位整数(或 SCODE 值)复制到新对象中。 参数 vtSrc 必须是 VT_I4、VT_ERROR 或 VT_BOOL

  • COleVariant(curSrc) 将 COleCurrency 值复制到新对象 VT_CY 中

  • COleVariant(fltSrc) 将 32 位浮点值复制到新对象 VT_R4 中

  • COleVariant(dblSrc) 将 64 位浮点值复制到新对象 VT_R8 中

  • COleVariant(timeSrc) 将 COleDateTime 值复制到新对象 VT_DATE 中

  • COleVariant(arrSrc) 将 CByteArray 对象复制到新对象 VT_EMPTY 中

  • COleVariant(lbSrc) 将 CLongBinary 对象复制到新对象 VT_EMPTY 中

有关 SCODE 的详细信息,请参阅 Windows SDK 中的 COM 错误代码结构

COleVariant::ChangeType

转换此 COleVariant 对象中变体值的类型。

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

参数

vartype
COleVariant 对象的 VARTYPE。

pSrc
指向要转换的 VARIANT 对象的指针。 如果此值为 NULL,则此 COleVariant 对象将用作转换源。

注解

有关详细信息,请参阅 Windows SDK 中的 VARIANTVARENUMVariantChangeType 条目。

COleVariant::Clear

清除 VARIANT

void Clear();

备注

此函数将此对象的 VARTYPE 设置为 VT_EMPTY。 COleVariant 析构函数调用此函数。

有关详细信息,请参阅 Windows SDK 中的 VARIANT、VARTYPE 和 VariantClear 条目。

COleVariant::Detach

从此 COleVariant 对象分离基础 VARIANT 对象。

VARIANT Detach();

备注

此函数将此 COleVariant 对象的 VARTYPE 设置为 VT_EMPTY。

注意

调用 Detach 后,调用方需负责针对生成的 VARIANT 结构调用 VariantClear

有关详细信息,请参阅 Windows SDK 中的 VARIANTVARENUMVariantClear 条目。

COleVariant::GetByteArrayFromVariantArray

从现有变体数组中检索字节数组

void GetByteArrayFromVariantArray(CByteArray& bytes);

参数

bytes
对现有 CByteArray 对象的引用。

COleVariant::operator LPCVARIANT

此强制转换运算符返回一个 VARIANT 结构,其值是从此 COleVariant 对象复制的。

operator LPCVARIANT() const;

注解

COleVariant::operator LPVARIANT

调用此强制转换运算符可访问此 COleVariant 对象的基础 VARIANT 结构。

operator LPVARIANT();

注解

注意

更改此函数返回的指针所访问的 VARIANT 结构中的值会更改此 COleVariant 对象的值。

COleVariant::operator =

这些重载的赋值运算符将源值复制到此 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);

备注

每个运算符的简要说明如下:

  • operator =(varSrc) 将现有的 VARIANT 或 COleVariant 对象复制到此对象中

  • operator =(pSrc) 将 pSrc 访问的 VARIANT 对象复制到此对象中

  • operator =(lpszSrc) 将以 null 结尾的字符串复制到此对象中,并将 VARTYPE 设置为 VT_BSTR

  • operator =(strSrc) 将 CString 对象复制到此对象中,并将 VARTYPE 设置为 VT_BSTR

  • operator =(nSrc) 将 8 位或 16 位整数值复制到此对象中。 如果 nSrc 是 8 位值,则此运算符的 VARTYPE 将设置为 VT_UI1。 如果 nSrc 是 16 位值,并且此运算符的 VARTYPE 为 VT_BOOL,则保留此设置;否则将其设置为 VT_I2

  • operator =(lSrc) 将 32 位整数值复制到此对象中。 如果此运算符的 VARTYPE 为 VT_ERROR,则保留此设置;否则将其设置为 VT_I4。

  • operator =(curSrc) 将 COleCurrency 对象复制到此对象中,并将 VARTYPE 设置为 VT_CY

  • operator =(fltSrc) 将 32 位浮点值复制到此对象中,并将 VARTYPE 设置为 VT_R4

  • operator =(dblSrc) 将 64 位浮点值复制到此对象中,并将 VARTYPE 设置为 VT_R8

  • operator =(dateSrc) 将 COleDateTime 对象复制到此对象中,并将 VARTYPE 设置为 VT_DATE

  • operator =(arrSrc) 将 CByteArray 对象复制到此 COleVariant 对象中

  • operator =(lbSrc) 将 CLongBinary 对象复制到此 COleVariant 对象中

有关详细信息,请参阅 Windows SDK 中的 VARIANTVARENUM 条目。

COleVariant::operator ==

此运算符比较两个变体值,如果它们相等,则返回非零值;否则返回 0。

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

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

COleVariant 值输出到 CArchiveCdumpContext,并从 CArchive 输入 COleVariant 对象。

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

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

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

备注

COleVariant 插入 (<<) 运算符支持诊断转储和存储到存档。 提取 (>>) 运算符支持从存档加载。

COleVariant::SetString

将字符串设置为特定类型。

void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc);

参数

lpszSrc
要复制到新 COleVariant 对象中的以 null 结尾的字符串。

VtSrc
COleVariant 对象的 VARTYPE。

注解

参数 vtSrc 必须是 VT_BSTR (UNICODE) 或 VT_BSTRT (ANSI)SetString 通常用于将字符串设置为 ANSI,因为使用字符串或字符串指针参数但不使用 VARTYPE 的 COleVariant::COleVariant 构造函数的默认值为 UNICODE。

非 UNICODE 版本中的 DAO 记录集要求字符串为 ANSI。 因此,对于使用 COleVariant 对象的 DAO 函数,如果你不创建 UNICODE 记录集,则必须使用 COleVariant::COleVariant(lpszSrc, vtSrc) 形式的构造函数并将 vtSrc 设置为 VT_BSTRT (ANSI),或使用 SetString 并将 vtSrc 设置为 VT_BSTRT 以生成 ANSI字符串。 例如,CDaoRecordset 函数 CDaoRecordset::SeekCDaoRecordset::SetFieldValue 使用 COleVariant 对象作为参数。 如果 DAO 记录集不是 UNICODE,则这些对象必须是 ANSI。

另请参阅

层次结构图