xmzhhh
路人甲
路人甲
  • 注册日期2007-05-08
  • 发帖数4
  • QQ
  • 铜币121枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1268回复:0

创建 'CMoDataConnection' 接口失败

楼主#
更多 发布于:2007-05-10 11:31
<P>void CSpatialDataManagerDlg::OnLoapMap() <BR>{<BR> // TOD Add your control notification handler code here<BR> CFileDialog FileOpenDlg(TRUE,"",NULL,<BR>  OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT,<BR>  "shapefiles(*.shp)|*.shp|All Files(*.*)|*.*||",<BR>  AfxGetMainWnd());<BR> if(FileOpenDlg.DoModal() != IDOK)<BR>  return ;<BR> //将.shp文件名和.shp文件路径名分别存储起来<BR> CString fileName,filePathName;<BR> fileName = FileOpenDlg.GetFileName();<BR> filePathName = FileOpenDlg.GetPathName();<BR> <BR> int loc = filePathName.Find(fileName,0);<BR> int i = 0;<BR> while(fileName!='.') i++;<BR> filePathName.Delete(loc,i+4);</P>
<P> // 创建 CMoDataConnection 对象<BR> CMoDataConnection conn;<BR> BOOL bOk = conn.CreateDispatch(_TEXT("MapObjects2.DataConnection")); <BR> if(!bOk) {<BR>  AfxMessageBox("创建 'CMoDataConnection' 接口失败");<BR>  return; } <BR> // 设置 conn 的属性<BR> <BR> conn.SetDatabase(filePathName);<BR> // 连接 至 Shp 文件 <BR> bOk = conn.Connect(); <BR> if(!bOk) {<BR>  AfxMessageBox("连接地图数据库失败");<BR>  return;<BR> }<BR> // 创建一个新的图层 <BR> CMoMapLayer layer; <BR> bOk = layer.CreateDispatch("MapObjects2.MapLayer");<BR> if(!bOk) {<BR>  AfxMessageBox("创建 'CMoMapLayer' 接口失败"); <BR>  return; <BR> }<BR> CMoGeoDataset geoDataset = conn.FindGeoDataset(fileName); <BR> // 设置将要添加到 m_MapObject 对象的layer的属性<BR> layer.SetGeoDataset(geoDataset);  <BR> if(layer.GetShapeType()==23)<BR>  layer.GetSymbol().SetColor(8454143);<BR> else if(layer.GetShapeType()==22)<BR>  layer.GetSymbol().SetColor(16384);<BR> else<BR>  layer.GetSymbol().SetColor(0x00FF00);<BR> //ageoDatset.GetProperty(<BR> ////////////////////////////////////////////////////////////<BR> ///////////////////显示当前.shp文件图像/////////////////////<BR> ////////////////////////////////////////////////////////////<BR> // 获得当前 MapObject 对象的图层集合<BR> CMoLayers layers = m_MapObject.GetLayers(); <BR> // 添加图层 <BR> //layers.Clear();<BR> layers.Add(layer);<BR> //占满窗格显示图像<BR> CMoRectangle rect;<BR> rect.CreateDispatch(_TEXT("MapObjects2.DataConnection")); <BR> rect = m_MapObject.GetFullExtent();<BR> m_MapObject.SetExtent(rect);<BR>}</P>


<P>为什么提示创建 'CMoDataConnection' 接口失败!!</P>
<P>请高手指点!!!</P>
喜欢0 评分0
游客

返回顶部