变体类型 Variant

VARIANT数据结构包含两个域(如果不考虑保留的域)。vt  域描述了第二个域的数据类型。 

VARIANT支持的类型,即 vt 可取的值(表1)
表1 VARIANT支持的类型
 
类型名
含义
VT_EMPTY
指示未指定值
VT_NULL
指示空值(类似于 SQL 中的空值)
VT_I2
指示 short 整数
VT_I4
指示 long 整数
VT_R4
指示 float 值
VT_R8
指示 double 值
VT_CY
指示货币值
VT_DATE
指示 DATE 值
VT_BSTR
指示 BSTR 字符串
VT_DISPATCH
指示 IDispatch 指针
VT_ERROR
指示 SCODE
VT_BOOL
指示一个布尔值
VT_VARIANT
指示 VARIANTfar 指针
VT_UNKNOWN
指示 IUnknown 指针
VT_DECIMAL
指示 decimal 值
VT_I1
指示 char 值
 
类型名
含义
VT_UI1
指示 byte
VT_UI2
指示 unsignedshort
VT_UI4
指示 unsignedlong
VT_I8
指示 64 位整数
VT_UI8
指示 64 位无符号整数
VT_INT
指示整数值
VT_UINT
指示 unsigned 整数值
VT_VOID
指示 C 样式 void
VT_HRESULT
指示 HRESULT
VT_PTR
指示指针类型
VT_SAFEARRAY
指示 SAFEARRAY
VT_CARRAY
指示 C 样式数组
VT_USERDEFINED
指示用户定义的类型
VT_LPSTR
指示一个以 NULL 结尾的字符串
VT_LPWSTR
指示由 nullNothingnullptrnull引用(在 Visual Basic 中为 Nothing) 终止的宽字符串
VT_RECORD
指示用户定义的类型
VT_FILETIME
指示 FILETIME 值
VT_BLOB
指示以长度为前缀的字节
VT_STREAM
指示随后是流的名称
VT_STORAGE
指示随后是存储的名称
VT_STREAMED_OBJECT
指示流包含对象
VT_STORED_OBJECT
指示存储包含对象
VT_BLOB_OBJECT
指示 Blob 包含对象
VT_CF
指示剪贴板格式
VT_CLSID
指示类 ID
VT_VECTOR
指示简单的已计数数组
VT_ARRAY
指示 SAFEARRAY 指针
VT_BYREF
指示值为引

例子 :

1.初始化为 4字节整形

VARIANT v;

v.vt = VT_I4;

v.lVal = 255;

 

2.初始化为 布尔类型

VARIANT v;

v.vt = VT_BOOL;

v.boolVal = VARIANT_TRUE;

 

3.保存字符串

VARIANT v;

v.vt = VT_BSTR;

v.bstrVal = SysAllocString(L"Hello,你好");

 

COleVariant类:

  COleVariant类是对VARIANT结构的封装。COleVariant的赋值操作符在与VARIANT类型转换中为我们提供极大的方便。

采用 COleVariant 初始化:

// 结果是VT_BSTR类型,值为"This is a test"

COleVariant v1("This is a test");     // 直接构造
COleVariant v2 = "This is a test";    

// 结果是VT_I4类型,值为2002
COleVariant v3((long)2002);
COleVariant v4 = (long)2002;

 

 

 

 

 

posted @ 2013-12-05 19:34  流风覆云  阅读(574)  评论(0)    收藏  举报