比如一个ActiceX控件有如下方法:
       SetBuffer(VARIANT & propVal)
要求传递的是long 的数组,怎么转换。ColeVariant好象没有这样的构造函数。如果给的代码成功执行,给满分100

解决方案 »

  1.   

    _variant_t vTemp(8l);  //8L,long型
    //_variant_t vOk;SetBuffer( vTemp );Have a try
      

  2.   

    _variant_t var;LONG Count = 100;SAFEARRAY* pSa = ::SafeArrayCreateVector(VT_I4, 0, Count);
    if (pSa != NULL)
    {
      var.vt = VT_ARRAY | VT_I4;
      var.parray = pSa;
      LONG* pvData = NULL;
      ::SafeArrayAccessData(pSa, (void**)&pvData);
      for (long i=0; i<Count; i++)
        pvData[i] = i;
      ::SafeArrayUnaccessData(pSa);
    }SetBuffer(var);
      

  3.   

    LeeZi(临渊羡鱼,不如退而结网) 说的对