Страница 96 из 111 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; }
|