变体类型 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;

浙公网安备 33010602011771号