http://www.gissky.net- GIS空间站

我要投稿 投稿指南 RSS订阅 网站资讯通告:
搜索: 您现在的位置: GIS空间站 >> 技术专栏 >> ArcGIS >> ArcObjects开发 >> 正文

AO开发笔记(实战篇)-用VC+AO开发独立的应用程序(3)续1

作者:Snoopy    文章来源:中国3S网站(httpwww.863s.com)    点击数:    更新时间:2006-12-11
摘要:
 

另外几个函数代码如下:

// 获取所有图层

BOOL CLayerManageDlg::GetAllLayer()

{

  if(m_ipMapControl == NULL) return FALSE;

  long lLayerCount=0;

  m_ipMapControl->get_LayerCount(&lLayerCount);

  CString szLayersName;

  int iIndex=0;

  for(long i=0;i<lLayerCount;i++)

  {

    ILayerPtr ipLayer;

    m_ipMapControl->get_Layer(i,&ipLayer);

    if(ipLayer)

    {

              BSTR bstrLayerName;

      ipLayer->get_Name(&bstrLayerName);

      VARIANT_BOOL bVisible=FALSE;

      ipLayer->get_Visible(&bVisible);

      szLayersName = bstrLayerName;

      ::SysFreeString(bstrLayerName);

      m_listLayer.InsertItem(iIndex,szLayersName,0);

      m_listLayer.SetCheck(iIndex,bVisible);

      iIndex++;

    }

  }

  return TRUE;

}

// 刷新地图显示

void CLayerManageDlg::RefreshMap()

{

  IActiveViewPtr ipActiveView;

  HRESULT hr=m_ipMapControl->get_ActiveView(&ipActiveView);

  if(ipActiveView != NULL)

  {

    ipActiveView->Refresh();

  }

}         

// 上移图层

void CLayerManageDlg::OnBtnUp()

{

  int iCurSel = m_listLayer.GetSelectionMark();

  if(iCurSel<=0) return;

  IMapPtr ipMap;

  HRESULT hr = m_ipMapControl->get_Map(&ipMap);

  if (FAILED(hr)) return ;

  ILayerPtr ipLayer;

  hr = ipMap->get_Layer(iCurSel,&ipLayer);

  if (FAILED(hr)) return ;

  hr = ipMap->MoveLayer(ipLayer,iCurSel-1);      

  if (FAILED(hr)) return ;

  RefreshMap();

  CString szLayerName = m_listLayer.GetItemText(iCurSel,0);

  BOOL bVisiable = m_listLayer.GetCheck(iCurSel);

  m_listLayer.DeleteItem(iCurSel);

  int iNewItem = m_listLayer.InsertItem(iCurSel-1,szLayerName,0);

  m_listLayer.SetCheck(iNewItem,bVisiable);

}

 

// 下移图层

void CLayerManageDlg::OnBtnDown()

{

  int iCurSel = m_listLayer.GetSelectionMark();

  if(iCurSel>=m_listLayer.GetItemCount()-1) return;

  IMapPtr ipMap;

  HRESULT hr = m_ipMapControl->get_Map(&ipMap);

  if (FAILED(hr)) return ;

  ILayerPtr ipLayer;

  hr = ipMap->get_Layer(iCurSel,&ipLayer);

  if (FAILED(hr)) return ;

  hr = ipMap->MoveLayer(ipLayer,iCurSel+1);

  if (FAILED(hr)) return ;

            RefreshMap();

  CString szLayerName = m_listLayer.GetItemText(iCurSel,0);

  BOOL bVisiable = m_listLayer.GetCheck(iCurSel);

  m_listLayer.DeleteItem(iCurSel);

  int iNewItem = m_listLayer.InsertItem(iCurSel+1,szLayerName,0);

  m_listLayer.SetCheck(iNewItem,bVisiable);

}

Tags:AO开发  
责任编辑:gissky
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 中国地图