常用的tagVARIANT结构【整理】

   VARIANT数据结构包含两个域(如果不考虑保留的域)。vt域描述了第二个域的数据类型。为了使多种类型能够在第二个域中出现,我们定义了一个联合结构。所以,第二个域的名称随着vt域中输入值的不同而改变。用于指定vt域值情况的常量在联合的定义中以每一行的注释形式给出。

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
typedef   struct  tagVARIANT VARIANT;
typedef   struct  tagVARIANT VARIANTARG;
struct  tagVARIANT {  
    
union  {  
        
struct  __tagVARIANT {  
            VARTYPE vt;  
            WORD    wReserved1;  
            WORD    wReserved2;  
            WORD    wReserved3;  
            
union  {  
                ULONGLONG     ullVal;       
/* VT_UI8               */   
                LONGLONG      llVal;        
/* VT_I8                */   
                LONG          lVal;         
/* VT_I4                */   
                BYTE          bVal;         
/* VT_UI1               */   
                SHORT         iVal;         
/* VT_I2                */   
                FLOAT         fltVal;       
/* VT_R4                */   
                DOUBLE        dblVal;       
/* VT_R8                */   
                VARIANT_BOOL  boolVal;      
/* VT_BOOL              */   
                _VARIANT_BOOL 
bool ;          /* (obsolete)           */   
                SCODE         scode;        
/* VT_ERROR             */   
                CY            cyVal;        
/* VT_CY                */   
                DATE          date;         
/* VT_DATE              */   
                BSTR          bstrVal;      
/* VT_BSTR              */   
                IUnknown *    punkVal;      
/* VT_UNKNOWN           */   
                IDispatch *   pdispVal;     
/* VT_DISPATCH          */   
                SAFEARRAY *   parray;       
/* VT_ARRAY             */   
                BYTE *        pbVal;        
/* VT_BYREF|VT_UI1      */   
                SHORT *       piVal;        
/* VT_BYREF|VT_I2       */   
                LONG *        plVal;        
/* VT_BYREF|VT_I4       */   
                LONGLONG *    pllVal;       
/* VT_BYREF|VT_I8       */   
                FLOAT *       pfltVal;      
/* VT_BYREF|VT_R4       */   
                DOUBLE *      pdblVal;      
/* VT_BYREF|VT_R8       */   
                VARIANT_BOOL *pboolVal;     
/* VT_BYREF|VT_BOOL     */   
                _VARIANT_BOOL *pbool;       
/* (obsolete)           */   
                SCODE *       pscode;       
/* VT_BYREF|VT_ERROR    */   
                CY *          pcyVal;       
/* VT_BYREF|VT_CY       */   
                DATE *        pdate;        
/* VT_BYREF|VT_DATE     */   
                BSTR *        pbstrVal;     
/* VT_BYREF|VT_BSTR     */   
                IUnknown **   ppunkVal;     
/* VT_BYREF|VT_UNKNOWN  */   
                IDispatch **  ppdispVal;    
/* VT_BYREF|VT_DISPATCH */   
                SAFEARRAY **  pparray;      
/* VT_BYREF|VT_ARRAY    */   
                VARIANT *     pvarVal;      
/* VT_BYREF|VT_VARIANT  */   
                PVOID         byref;        
/* Generic ByRef        */   
                CHAR          cVal;         
/* VT_I1                */   
                USHORT        uiVal;        
/* VT_UI2               */   
                ULONG         ulVal;        
/* VT_UI4               */   
                INT           intVal;       
/* VT_INT               */   
                UINT          uintVal;      
/* VT_UINT              */   
                DECIMAL *     pdecVal;      
/* VT_BYREF|VT_DECIMAL  */   
                CHAR *        pcVal;        
/* VT_BYREF|VT_I1       */   
                USHORT *      puiVal;       
/* VT_BYREF|VT_UI2      */   
                ULONG *       pulVal;       
/* VT_BYREF|VT_UI4      */   
                ULONGLONG *   pullVal;      
/* VT_BYREF|VT_UI8      */   
                INT *         pintVal;      
/* VT_BYREF|VT_INT      */   
                UINT *        puintVal;     
/* VT_BYREF|VT_UINT     */   
                
struct  __tagBRECORD {  
                    PVOID         pvRecord;  
                    IRecordInfo * pRecInfo;  
                } __VARIANT_NAME_4;         
/* VT_RECORD            */   
            } __VARIANT_NAME_3;  
        } __VARIANT_NAME_2;  
  
        DECIMAL decVal;  
    } __VARIANT_NAME_1;  
};

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值