Проблема:
Автоматизация 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...
В чём же грабли??