工作经验总结之_VARIANT变量用法

来源:互联网 发布:中海达gps数据导出 编辑:程序博客网 时间:2024/05/16 12:01

工作经验总结之_VARIANT变量用法

 

typedef struct  tagCY{

结构体原型

typedef struct tagVARIANT {
 VARTYPE vt;//enum类型
 unsigned short wReserved1//保留字段;
 unsigned short wReserved2;
 unsigned short wReserved3;
 union//保存数据的结构(联合体类型采用覆盖技术)一次只能使用一种数据类型 
{
 unsigned char bVal; 
 short iVal; 
 long lVal; 
 float fltVal;.
 double dblVal;
 VARIANT_BOOL boolVal;//  0 == FALSE, -1 == TRUE 
typedef short VARIANT_BOOL;
 SCODE scode; // typedef long SCODE;
 CY cyVal; //  DATE date;
 BSTR bstrVal;// typedef OLECHAR* BSTR;// typedef WCHAR OLECHAR;// //typedef wchar_t WCHAR;// typedef unsigned short wchar_t;
 
 IUnknown FAR* punkVal; //用于COM接口
 IDispatch FAR* pdispVal; //用于COM接口
       SAFEARRAY FAR* parray; //
    // unsigned char FAR* pbVal;
 short FAR* piVal; 
 long FAR* plVal; 
 float FAR* pfltVal; 
 double FAR* pdblVal; 
 VARIANT_BOOL FAR* pboolVal; 
 SCODE FAR* pscode;
 CY FAR* pcyVal; 
 DATE FAR* pdate; 
 BSTR FAR* pbstrVal; 
 IUnknown FAR* FAR* ppunkVal; 
 IDispatch FAR* FAR* ppdispVal;
 SAFEARRAY FAR* FAR* pparray;//二级指针
 VARIANT FAR* pvarVal; 
 void FAR* byref;
 };
};
typedef struct FARSTRUCT tagVARIANT VARIANT;
typedef struct FARSTRUCT tagVARIANT VARIANTARG;

//第一部分是enum类型,用来说明存储的数据类型

//第二部分是union类型,用来存储一种数据(enum来指定的)

//使用初始化函数VariantInit( 

  VARIANTARG *  pvarg  

);

//使用方法是先设置要存储的数据类型,再存储到相应的类型中

//获取同样

使用最简单的方法是用_bstr_t(var)统一变成字符串类型再进行相应转换!

 

 

                         LONGLONG int64;
                     }CY;
 //typedef struct tagSAFEARRAY 
       //  {
       //  USHORT cDims;//数组的维数
       // USHORT fFeatures;//标志位
       //  USHORT cbElements;//数组中元素的大小
       //   USHORT cLocks;//
       //   USHORT handle;
       //   PVOID pvData;//存储数据
 //   SAFEARRAYBOUND rgsabound[1];//每一维的数组的下界数和数组元素个数
       //   }  SAFEARRAY;
原创粉丝点击