发表用户:heyou
收集整理:James.Liu
相关讨论:http://www.mygis.com.cn/forum/dispbbs.asp?boardID=4&ID=5872
信息原始来源:不祥

文章标题:加入地图集时,同时加入对应的数据集!!!(有代码!)

加入地图集时,同时加入对应的数据集!!!(有代码!)
void OnGeodatasetOpen()
{
 CString strFilePath,strFileName;
 CMapXLayer lyr;
 CMapXLayerInfo LayerInfo;
 CMapXDataset   ds;
 COleVariant layerVt;

 LayerInfo.CreateDispatch (LayerInfo.GetClsid ());
 
 CFileDialog dlgOpnGst(TRUE,"gst|*.gst",NULL,OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY,"GeoSet(*.gst)|*.gst|",this);
 dlgOpnGst.m_pOFN ->lpstrTitle = "打开地图集";

 if(dlgOpnGst.DoModal ()==IDCANCEL)
  return;

 strFileName = dlgOpnGst.GetFileName();
 strFilePath = dlgOpnGst.GetPathName();
 
 m_ctrlMapX.SetGeoSet (strFileName); 

  CString str;
  int count=m_ctrlMapX.GetLayers ().GetCount ();
  str.Format ("%d",count);
  AfxMessageBox(str);


 for(int i=0;i<m_ctrlMapX.GetLayers ().GetCount ();i++)  //////////////////////////////////////
 {
  AfxMessageBox("add dataset!");

  lyr=m_ctrlMapX.GetLayers ().Item (i+1); 
  
  layerVt.vt = VT_DISPATCH;
  layerVt.pdispVal = lyr.m_lpDispatch;
  layerVt.pdispVal->AddRef();
  
  m_ctrlMapX.GetDatasets ().Add (miDataSetLayer,layerVt,ds.GetName ()); 
  
 
 }

 ds.DetachDispatch ();
 lyr.DetachDispatch ();

 m_ctrlMapX.SetNumericCoordSys (m_ctrlMapX.GetDisplayCoordSys ());
 //m_ctrlMapX.SetMapUnit (m_ctrlMapX.GetNumericCoordSys ().GetUnits ());