请教高手:c++ builder 通过OLE调用Surfer绘图软件所遇到数据传递问题
Surfer8.0是一个二维等值线绘图软件,通过c++ builder6.0调用Surfer8.0可以更方便 更自动化的做图。下面是主要代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant surfApp,ContourMap,shapes,shapes2,mapframe,mapframe2,pRM,Docs,Windows;
Variant BaseMap,polygon;
surfApp = CreateOleObject("Surfer.Application");//启动SURFER软件
surfApp.OlePropertySet("WindowState", 1);//窗口状态
Docs= surfApp.OlePropertyGet("Documents");
Docs.OleProcedure("Add",(Variant)1);
Docs = surfApp.OlePropertyGet("ActiveDocument");
shapes = Docs.OlePropertyGet("Shapes");
surfApp.OlePropertySet("Visible", true);
Windows = surfApp.OlePropertyGet("Windows");
double coo2[10] = {2.8, 2.2,3.4, 2.7, 3.7, 2.2, 3.5, 1.8, 2.8, 2.2};//定义一个多边形角点坐标文件
SAFEARRAY a; // COM中的VB数组是SAFEARRAY,因此要转换一下类型
//SAFEARRAY *a = new SAFEARRAY;
a.cDims = 1 ;
a.fFeatures = FADF_FIXEDSIZE;
a.cbElements = sizeof(double);
a.pvData = (void *)&coo2[0];
a.rgsabound->cElements = 10;
a.rgsabound->lLbound = 0;
polygon = shapes.OleFunction("AddPolygon",a);//调用SURFER绘图软件画一个多边形,问题我想就出在这一步,总提示类型不匹配,不知道怎么回事,望专家给予解答