Справочник по технологии COM
Страница 96. SafeArrayCreate


 

SafeArrayCreate

Создает новый дескриптор массива, размещает и инициализирует данные массива и возвращает указатель на новый дескриптор.

SAFEARRAY * SafeArrayCreate
(
VARTYPE vt,
unsigned int cDims,
SAFEARRAYBOUND FAR* rgsabound
);

Параметры:
vt
Базовый тип массива (VARTYPE всех элементов массива). VARTYPE ограничен набором вариантных типов. Нельзя устанавливать флаги VT_ARRAY и VT_BYREF. VT_EMPTY и VT_NULL не являются допустимыми базовыми типами массива, все остальные типы допускаются.
cDims
Число измерений массива. Это число нельзя изменить после создания массива.
rgsabound
Указатель на вектор, элементы которого описывают границы измерений массива (один элемент на каждое измерение).

Возвращаемое значение:
Указатель на дескриптор массива или NULL, если нельзя создать массив.

HRESULT PASCAL _export CPoly::EnuraPoints(IEnumVARIANT FAR* FAR* ppenum) 
{
unsigned int i;
HRESULT hresult;
VARIANT var;
SAFEARRAY FAR* psa;
CEnumPoint FAR* penum;
POINTLINK FAR* ppointlink;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = m_cPoints;
psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound);
if(psa == NULL)
{
hresult = ReportResult(0, E_OUTOFMEMORY, 0, 0);
goto LErrorO
}

// Код опущен для экономии места

LErrorO:
return hresult;
}

 
Следующая статья »