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

本文总结了_VARIANT变量在实际工作中的使用经验,包括其结构体tagCY的定义,如何通过enum指定存储数据类型,以及如何利用union存储不同类型的数据。建议使用_bstr_t进行类型转换,方便进行后续操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作经验总结之_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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值