在VC中如何使用VARIANT型变量

在VC中如何使用VARIANT型变量

 

    VIRIANT是ACTIVEX AUTOMATION需要用到的一种变量类型,可以称之为通用数据类型,其实它是一个结构。如果仅仅是调用ACTIVEX对象所提供的METHOD不需知道其中的细节。它仅用于通过IDISPATCH接口调用特定的METHOD或属性时用,VB和VC已经将这一过程透明。(主持人注:换句话说,VC会自动转换简单数据类型。)
    关于下面的几个METHOD,例如OPENURL,在VB中原形是object.OpenUrl(url [,datatype] url是有效的URL字符串, DATATYPE是整形,返回指定URL的文档。在MFC中是CInternetSession::OpenURL

  1.     VIRIANT是ACTIVEX AUTOMATION需要用到的一种变量类型,可以称之为通用数据类型,其实它是一个结构。如果仅仅是调用ACTIVEX对象所提供的METHOD不需知道其中的细节。它仅用于通过IDISPATCH接口调用特定的METHOD或属性时用,VB和VC已经将这一过程透明。(主持人注:换句话说,VC会自动转换简单数据类型。) 
  2.     关于下面的几个METHOD,例如OPENURL,在VB中原形是object.OpenUrl(url [,datatype] url是有效的URL字符串, DATATYPE是整形,返回指定URL的文档。在MFC中是CInternetSession::OpenURL 
  3.     CStdioFile* OpenURL( LPCTSTR pstrURL, DWORD dwContext = 1, DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, LPCTSTR pstrHeaders = NULL, DWORD dwHeadersLength = 0 ); 
  4.     Throw ( CInternetException ); 
  5.     VARIANT的定义如下: 
  6.     typedef struct FARSTRUCT tagVARIANT VARIANT; 
  7.     typedef struct FARSTRUCT tagVARIANT VARIANTARG; 
  8.      
  9.     typedef struct tagVARIANT { 
  10.      VARTYPE vt; 
  11.      unsigned short wReserved1; 
  12.      unsigned short wReserved2; 
  13.      unsigned short wReserved3; 
  14.      union { 
  15.      unsigned char bVal; // VT_UI1. 
  16.      short iVal; // VT_I2 . 
  17.      long lVal; // VT_I4 . 
  18.      float fltVal; // VT_R4 . 
  19.      double dblVal; // VT_R8 . 
  20.      VARIANT_BOOL boolVal; // VT_BOOL. 
  21.      SCODE scode; // VT_ERROR. 
  22.      CY cyVal; // VT_CY . 
  23.      DATE date; // VT_DATE. 
  24.      BSTR bstrVal; // VT_BSTR. 
  25.      IUnknown FAR* punkVal; // VT_UNKNOWN. 
  26.      IDispatch FAR* pdispVal; // VT_DISPATCH. 
  27.      SAFEARRAY FAR* parray; // VT_ARRAY|*. 
  28.      unsigned char FAR* pbVal; // VT_BYREF|VT_UI1. 
  29.      short FAR* piVal; // VT_BYREF|VT_I2. 
  30.      long FAR* plVal; // VT_BYREF|VT_I4. 
  31.      float FAR* pfltVal; // VT_BYREF|VT_R4. 
  32.      double FAR* pdblVal; // VT_BYREF|VT_R8. 
  33.      VARIANT_BOOL FAR* pboolVal; // VT_BYREF|VT_BOOL. 
  34.      SCODE FAR* pscode; // VT_BYREF|VT_ERROR. 
  35.      CY FAR* pcyVal; // VT_BYREF|VT_CY. 
  36.      DATE FAR* pdate; // VT_BYREF|VT_DATE. 
  37.      BSTR FAR* pbstrVal; // VT_BYREF|VT_BSTR. 
  38.      IUnknown FAR* FAR* ppunkVal; // VT_BYREF|VT_UNKNOWN. 
  39.      IDispatch FAR* FAR* ppdispVal; // VT_BYREF|VT_DISPATCH. 
  40.      SAFEARRAY FAR* FAR* pparray; // VT_ARRAY|*. 
  41.      VARIANT FAR* pvarVal; // VT_BYREF|VT_VARIANT. 
  42.      void FAR* byref; // Generic ByRef. 
  43.      }; 
  44.     }; 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值