Я не знаю, почему ниже команды "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);
}