Как использовать CComSafeArray для получения данных SAFEARRAY - PullRequest
0 голосов
/ 04 октября 2018

Я не знаю, почему ниже команды "HRESULT hr = cElement.Attach (* saData);"не работал.Мне нравится применять обучение, чтобы получить большие данные, определенные «SAFEARRAY».спасибо.

  #include "atlsafe.h"
  #include <iostream>
  using namespace std;


  void CreateSafeArray(SAFEARRAY **saData)
  {

  SAFEARRAYBOUND Bound;
  Bound.lLbound = 0;
  Bound.cElements = 10;

  *saData = SafeArrayCreate(VT_VARIANT, 1, &Bound);

  short HUGEP * pData = NULL;
  HRESULT hr = SafeArrayAccessData(*saData, (void HUGEP * FAR *)&pData);
  if (SUCCEEDED(hr))
      {
         for (short i = 0; i <(short) Bound.cElements; ++i)
         {
             pData[i]=i;
         }
         SafeArrayUnaccessData(*saData);    
      }
   }

  int main(void)
  {
      // Create SafeAarray
      SAFEARRAY **saData=new SAFEARRAY*;
      CreateSafeArray(&*saData);

      // access SafeArray by CComSafeArray
      CComSafeArray <short> cElement;
      HRESULT hr=cElement.Attach(*saData);  

      SafeArrayDestroy(*saData);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...