SAFEARRAY* SafeArrayCreateVectorEx( 
  VARTYPE  vt,             
  long  lLbound,           
  unsigned int  cElements,  
  LPVOID  pvExtra  
);俺要创建一个SAFEARRAY,内部存储自定义的结构(struct),但LPVOID  pvExtra 应该如何赋值呢??代码如下:struct gg
{
  BSTR str1;
  BYTE byte1;
}GG; SAFEARRAY *ps= SafeArrayCreateVectorEx(VT_RECORD,0,0,??);这第四个参数该怎么传呢??很急的问题,高手帮帮忙吧!

解决方案 »

  1.   

    获取IRecordInfo接口中描述结构的指针赋值即可.
      

  2.   

    USES_CONVERSION;
    IRecordInfo* pRecordInfo = NULL;
    HRESULT hr = GetRecordInfoFromGuids(LIBID_TestArray1Lib, 
    1,
    0,
    0,
    __uuidof(struct TestStruct),
    &pRecordInfo);
    SAFEARRAYBOUND safeArrayBound;
    safeArrayBound.lLbound = 0;
    safeArrayBound.cElements = 10;

    *psaArray = SafeArrayCreateVectorEx(VT_RECORD, 0,2, pRecordInfo);
    pRecordInfo->Release();
      

  3.   

    LIBID_TestArray1Lib是从哪里来的呢??
      

  4.   

    唉,你自己做个看看不就行了。
    LIBID_TestArrayLib是类型库的ID,在import时产生的tlh里面就有。
      

  5.   

    我也碰到这样的问题,MSDN上也和test422说得差不多,有没有更简单的方法啊?