实际目录例如:C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\OAIDL.h
参粗野察考这岩茄篇:
http://www.dewen.io/q/8514
VARIANT 、_variant_t 与 COleVariantVARIANT的结构可以参考头文件VC98\Include\OAIDL.H中关于结构体tagVARIANT的定义。
对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,举个例子:
VARIANT va
int a=2001
va.vt=VT_I4///指明整型数据
va.lVal=a///赋值
对于不马上赋值的VARIANT,最好先用Void VariantInit(VARIANTARG FAR* pvarg)进行初始化,其本质是将vt设置为VT_EMPTY,下表我喊睁旦们列举vt与常用数据的对应关系:
Byte bVal// VT_UI1.
Short iVal// VT_I2.
long lVal// VT_I4.
float fltVal// VT_R4.
double dblVal// VT_R8.
VARIANT_BOOL boolVal// VT_BOOL.
SCODE scode// VT_ERROR.
CY cyVal// VT_CY.
DATE date// VT_DATE.
BSTR bstrVal// VT_BSTR.
DECIMAL FAR* pdecVal // VT_BYREF|VT_DECIMAL.
IUnknown FAR* punkVal// VT_UNKNOWN.
IDispatch FAR* pdispVal// VT_DISPATCH.
SAFEARRAY FAR* parray// VT_ARRAY|*.
Byte FAR* pbVal// VT_BYREF|VT_UI1.
short FAR* piVal// VT_BYREF|VT_I2.
long FAR* plVal// VT_BYREF|VT_I4.
float FAR* pfltVal// VT_BYREF|VT_R4.
double FAR* pdblVal// VT_BYREF|VT_R8.
VARIANT_BOOL FAR* pboolVal// VT_BYREF|VT_BOOL.
SCODE FAR* pscode// VT_BYREF|VT_ERROR.
CY FAR* pcyVal// VT_BYREF|VT_CY.
DATE FAR* pdate/郑扰/ VT_BYREF|VT_DATE.
BSTR FAR* pbstrVal// VT_BYREF|VT_BSTR.
IUnknown FAR* FAR* ppunkVal// VT_BYREF|VT_UNKNOWN.
IDispatch FAR* FAR* ppdispVal// VT_BYREF|VT_DISPATCH.
SAFEARRAY FAR* FAR* pparray// VT_ARRAY|*.
VARIANT FAR* pvarVal// VT_BYREF|VT_VARIANT.
void FAR* byref// Generic ByRef.
char cVal// VT_I1.
unsigned short uiVal// VT_UI2.
unsigned long ulVal// VT_UI4.
int intVal// VT_INT.
unsigned int uintVal//早竖 VT_UINT.
char FAR * pcVal// VT_BYREF|VT_I1.
unsigned short FAR * puiVal// VT_BYREF|VT_UI2.
unsigned long FAR * pulVal// VT_BYREF|VT_UI4.
int FAR * pintVal// VT_BYREF|VT_INT.
unsigned int FAR * puintVal//VT_BYREF|VT_UINT.
ColeVariant需要引用 #include <afxdisp.h>
细节如下:
COleVariant类是对VARIANT结构的封装。
VARIANT 结皮蚂构包含两部分。其一是 VARTYPE 型的成员变量vt;其二是个联合类型,这个联合包含了VC常用的几乎所有类型。因为联合用的是相同的或禅存储空间,因此对联合的内容的解释依赖于 vt。
COleVariant 本质上是一个枚举,用同一种类型来表达不同的子类型。如同boost中的variant。燃团埋
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)