例如
typedef struct
{
int a;
bool b;
}myStruct;
myStruct aa; //or, myStruct* aavariant myVariant;那么myVariant.vt是什么?

解决方案 »

  1.   

    SAFEARRAY->VARIANT->BYTE
    sizeof(aa)  数组长
      

  2.   

    VARIANT->SAFEARRAY->BYTEvar.vt=VT_ARRAY|VT_UI1;
      

  3.   

    HRESULT hr;
    SAFEARRAY* psa;
    int ilen=sizeof(CtrlKey);
    psa = ::SafeArrayCreateVector(VT_UI1, 0, ilen);
    long ind[1];
    for(int i=0;i<ilen;i++)
    {
    ind[0]=i;
    ::SafeArrayPutElement(psa, ind, (void*)((BYTE*)in+i));
    }
    //////////////////////
    var.vt=VT_ARRAY|VT_UI1;
    // ::SafeArrayCopy(psa,&(var.parray));
    var.parray=psa;
    //////////////////
    m_Macro->ReCordData(var);  // Record Data 
    SafeArrayDestroy(psa);
    VariantClear(&var);
      

  4.   

    typedef struct
    {
    int a;
    bool b;
    }myStruct;
    myStruct myStruct* aavariant myVariant;myVariant.byref=aa;      // byref是一般指针
    --------------------
    .... funtion(VARIANT varPara)
    {
      myStruct *bb;
      bb=(myStruct*)varPara.byref;