阅读:1269回复:0
创建 'CMoDataConnection' 接口失败
<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> |
|