请教高手:c++ builder 通过OLE调用Surfer绘图软件所遇到数据传递问题

bgpgmeyjs 2009-05-28 09:00:34
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绘图软件画一个多边形,问题我想就出在这一步,总提示类型不匹配,不知道怎么回事,望专家给予解答
...全文
170 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧