Mxd文件的分类保存

 对已打开正在编辑的文件进行保存:

void CTestView::OnMenuSavemxdfile()
{
 VARIANT_BOOL vbReadOnly;
 //判断是否只读
 m_ipMapDoc->get_IsReadOnly(m_bstrDocName,&vbReadOnly);
 if(vbReadOnly == VARIANT_FALSE)
 {
  //如果文件不为只读,则进行保存
  m_ipMapDoc->Save(true,true); 
 }
 else
  SaveAsMxd();  //否则把文件另存
 
}

把打开的文件进行另存:

BOOL CTestView::SaveAsMxd()
{
 //另存mxd文件
 CFileDialog fileDlg(FALSE,"mxd",NULL,OFN_EXPLORER|OFN_HIDEREADONLY,
       "mxd文件(*.mxd)|*.mxd||",NULL);
 if(fileDlg.DoModal()!=IDOK)
  return FALSE;
 
 CComBSTR bstrName,bstrMapDocName,bstrPass="";
 bstrName = fileDlg.GetPathName();
 
 VARIANT_BOOL bVal=TRUE;

 IMxdContentsPtr ipMxdContents(m_MapControl.GetMap());
 IMapDocumentPtr ipMapDoc(__uuidof(MapDocument));

 ipMapDoc = m_ipMapDoc;
 IActiveViewPtr ipActiveView(m_MapControl.GetMap());
 ipMapDoc->ReplaceContents(ipMxdContents);
 ipMapDoc->SaveAs(bstrName,bVal,bVal);

 return TRUE;

}

打开已经存在的MXD文件:

BOOL CTestView::LoadMxdFile()
{
 //打开mxd文件
 CFileDialog fileDlg(TRUE,NULL,NULL,OFN_EXPLORER|OFN_HIDEREADONLY,
     "mxd文件(*.mxd)|*.mxd||",NULL);
 if(fileDlg.DoModal()!=IDOK)
  return FALSE;
 
 CString strName;
 strName = fileDlg.GetPathName();

 CComBSTR mxdFileName,bstrPass="";

 mxdFileName = strName;
 IMapDocumentPtr ipMapDoc(__uuidof(MapDocument));

 ipMapDoc->Open(mxdFileName,bstrPass);
 ipMapDoc->get_Map(0,&m_ipMap);

 m_ipMapControl->putref_Map(m_ipMap);
 m_ipMapDoc = ipMapDoc;
 m_bstrDocName = mxdFileName;
 return TRUE;

}

自己建立新的MXD文件:

BOOL CTestView::NewMxdFile()
{
 //新建mxd文件
 CFileDialog fileDlg(FALSE,"mxd",NULL,OFN_EXPLORER|OFN_HIDEREADONLY,
     "mxd文件(*.mxd)|*.mxd||",NULL);
 
 if(fileDlg.DoModal()!=IDOK)
  return FALSE;

 m_MapControl.ClearLayers();

 CComBSTR bstrName;
 bstrName = fileDlg.GetPathName();

 IMapDocumentPtr ipMapDoc(__uuidof(MapDocument));
 ipMapDoc->New(bstrName);
 m_bstrDocName = bstrName;
 
 IMxdContentsPtr ipMxdC(m_MapControl.GetMap());
 IActiveViewPtr ipActiveView(m_MapControl.GetMap());
 ipMapDoc->ReplaceContents(ipMxdC);
 ipMapDoc->Save(true,true);
 
 m_ipMapDoc = ipMapDoc;  //赋给成员变量备用

 return TRUE;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值