请教SafeArrayGetElement的用法:
在VC调用外部COM组件时,如何从COM组件中取出数据?主要是函数SafeArrayGetElement怎么用?请大侠帮帮忙吧!!小弟谢谢了!!麻烦写的详细点

解决方案 »

  1.   

    Example
    STDMETHODIMP CEnumPoint::Next(
       ULONG celt,
       VARIANT FAR rgvar[],
       ULONG * pceltFetched)
    {
       unsigned int i;
       long ix;
       HRESULT hresult;   for(i = 0; i < celt; ++i)
          VariantInit(&rgvar[i]);   for(i = 0; i < celt; ++i){
          if(m_iCurrent == m_celts){
          hresult = ReportResult(0, S_FALSE, 0, 0);
             goto LDone;
       }      ix = m_iCurrent++;
          hresult = SafeArrayGetElement(m_psa, &ix, &rgvar[i]);
          if(FAILED(hresult))
             goto LError0;
       }
       hresult = NOERROR;LDone:;
       *pceltFetched = i;
       return hresult;LError0:;
       for(i = 0; i < celt; ++i)
          VariantClear(&rgvar[i]);
       return hresult;
    }