ошибка DISP_E_ARRAYISLOCKED в AddPolyline()
От: Hedge  
Дата: 22.07.05 13:54
Оценка:
Проблема:
Автоматизация PowerPoint,
при попытке выполнить
pSlide->Shapes->AddPolyline( vcoords );

где vcoords — VARIANT в котором содержится SafeArray
Функция raw_AddPolyline возвращает код ошибки DISP_E_ARRAYISLOCKED

пользуюсь #import:
#import "MSO.DLL"
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
#import "MSPPT.OLB" \
        rename("ExitWindows","_ExitWindows")
#import "C:\Program Files\Common Files\Microsoft Shared\DAO\DAO360.DLL" \
        rename("EOF","EndOfFile") rename("BOF","BegOfFile")
#endif



Собственно код:
VARIANT vcoords;
V_VT(&vcoords)=VT_ARRAY|VT_VARIANT;

SAFEARRAYBOUND saBound[ 2 ] ;
saBound[ 0 ].cElements = 2 ;
saBound[ 0 ].lLbound = 0 ;
saBound[ 1 ].cElements = 2 ;
saBound[ 1 ].lLbound = 0 ;

vcoords.parray = SafeArrayCreate( VT_I4, 2, saBound ) ;

_variant_t coord[4]={20L,20L,100L,100L};

long arrPos[2];
arrPos[0] = 0;
arrPos[1] = 0;
hr=SafeArrayPutElement(vcoords.parray,arrPos,&coord[0]);
arrPos[0] = 1;
arrPos[1] = 0;
hr=SafeArrayPutElement(vcoords.parray,arrPos,&coord[1]);
arrPos[0] = 0;
arrPos[1] = 1;
hr=SafeArrayPutElement(vcoords.parray,arrPos,&coord[2]);
arrPos[0] = 1;
arrPos[1] = 1;
hr=SafeArrayPutElement(vcoords.parray,arrPos,&coord[3]);

PowerPoint::ShapePtr myShapePtr = pSlide->Shapes->AddPolyline( vcoords );



Не могу понять почему он LOCKED...
В чём же грабли??
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.