vc调用surfer问题

xyliang230 2007-10-25 03:08:54
代码如下:

IApplicationPtr pApp(__uuidof(Application));
pApp->put_Visible(VARIANT_FALSE);
IDocumentsPtr Docs;
pApp->get_Documents(&Docs);
IPlotDocumentPtr Doc;
Docs->Add(srfDocPlot,/*(IDispatch**)*/&Doc);
IShapesPtr pshapes;
Doc->get_Shapes(&pshapes);
IMapFramePtr pMF;
CFileDialog dlg(TRUE, NULL, "*.grd" , OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,"离散点文件 *.grd");
if(dlg.DoModal()==IDOK)
{
CString strPatch=dlg.GetPathName();
pshapes->AddContourMap(_bstr_t(strPatch),&pMF);
}



Docs->Add(srfDocPlot,&Doc);这句过不去,
提示:错误1error C2664: “IDocuments::Add”: 不能将参数 2 从“IPlotDocument **”转换为“IDispatch **”
我如果强制转换后运行时Doc就为空了
请问有做个这个的吗?
...全文
205 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
huxiongwu 2011-12-11
  • 打赏
  • 举报
回复
COleVariant inGrid(pinGrid, VT_BSTR); // input filename as a variant
COleVariant blnGrid(pblnGrid, VT_BSTR);
COleVariant outGrid(poutGrid, VT_BSTR);
pApp->GridBlank (inGrid.bstrVal, blnGrid.bstrVal, outGrid.bstrVal, srfGridFmtS7, &vtStatus);

//利用Surfer作图
IDocumentsPtr pDocs;
pApp->get_Documents(&pDocs);
// 文档类指针.
IPlotDocumentPtr plot;
pDocs->Add(srfDocPlot, &(IDispatchPtr(IDocumentsPtr(plot)))); //图片指针
IShapesPtr pShapes;
plot->get_Shapes(&pShapes);
IMapFramePtr pContourMap;
pShapes->AddContourMap(outGrid.bstrVal, &pContourMap); //载入等值线图
huxiongwu 2011-12-11
  • 打赏
  • 举报
回复
我也遇到同样的问题
xyliang230 2007-10-25
  • 打赏
  • 举报
回复
IPlotDocument 是从IDispatch派生来的,为什么用它作为参数不行呢
wshcdr 2007-10-25
  • 打赏
  • 举报
回复
没做过

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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