在状态栏显示坐标

1、添加组件库,并重命名。在stdafx.h中添加如下代码:#pragma warning(push)
#pragma warning(disable:4192)
#pragma warning(disable:4146)
#pragma warning(disable:4099)
#import "D:/Program Files/ArcGIS/com/esriSystem.olb"raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR")
#import "D:/Program Files/ArcGIS/com/esriSystemUI.olb"raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR"),rename("ICommand", "esriICommand"), rename("IProgressDialog", "esriIProgressDialog")
#import "D:/Program Files/ArcGIS/com/esriGeometry.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR")
#import "D:/Program Files/ArcGIS/com/esriDisplay.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR"),rename("RGB", "esriRGB"), rename("CMYK", "esriCMYK"),rename("ResetDC", "esriIResetDC"), rename("DrawText", "esriDrawText")
#import "D:/Program Files/ArcGIS/com/esriGeoDatabase.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR"), rename("IRow", "esriIRow"), rename("ICursor", "esriICursor")
#import "D:/Program Files/ArcGIS/com/esriCarto.olb" raw_interfaces_only,raw_native_types,no_namespace,named_guids,exclude("OLE_HANDLE","OLE_COLOR"), rename("ITableDefinition", "esriITableDefinition"), rename("UINT_PTR", "esriUINT_PTR")
#pragma warning(pop)
2、添加状态栏窗格:在manfrm源文件中indicators数组中添加两个ID_SEPARATOR。

3、在mainfrm中添加,显示坐标函数

void CMainFrame::SetPaneText(int index, CString sText)
{
 if (m_wndStatusBar)
 {
  m_wndStatusBar.SetPaneText(index,sText);
 }
}
4、添加mapcomposer类并添加showmousecoord函数

void CMapComposer::showMouseCoord(double mapX,double mapY)
{
 if(m_ipMap ==NULL) return;
 HRESULT hr;

 esriUnits eUnits;
 CString sUnits;
 BSTR bsUnits;
 IUnitConverterPtr ipUC(CLSID_UnitConverter);
 hr = m_ipMap->get_MapUnits(&eUnits);
 if(FAILED(hr)) return;

 hr = ipUC->EsriUnitsAsString(eUnits,esriCaseAppearanceUnchanged,VARIANT_FALSE,&bsUnits);
 if(FAILED(hr)) return;
 sUnits = bsUnits;

 char tbuf[120]; 
 sprintf(tbuf,"%.4f,%.4f,%s",mapX,mapY,sUnits);这个函数写错了,编译不会出错!
 CMainFrame * pMainFrm = (CMainFrame*)AfxGetMainWnd();
    if(pMainFrm ==NULL) return;
 pMainFrm->SetPaneText(1,(CString)tbuf);

}
5、在stdafx.h中包含mapcomposer.h,在view类中添加响应mousemove消息OnMapControl1MouseMove函数

void CtestView::OnMouseMoveMapcontrol1(long button, long shift, long X, long Y, double mapX, double mapY)
{
 // TODO: 在此处添加消息处理程序代码
 CMapComposer MapComposer;
 MapComposer.m_ipMap = m_ctrlMap.get_Map();
 MapComposer.showMouseCoord(mapX,mapY);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值