mapx之vc自定义测距工具(PolyToolUsed事件)

QueenKing天枰

QueenKing天枰

2016-02-19 12:56

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是mapx之vc自定义测距工具(PolyToolUsed事件),一起来学习了解下吧!

:mapx之vc自定义测距工具(PolyToolUsed事件)
:VC6+mapx4.5+win2000
: www.51gis.com

//1.定义常量
#define MYTOOL_DISTANCE 100 //1~999

//2.创建工具
m_ctrlMap.CreateCustomTool(MYTOOL_DISTANCE,miToolTypePoly,miCrossCursor);

//3.响应事件
void CMapXSampleView::OnPolyToolUsedMap(short ToolNum, long Flags, LPDISPATCH Points,
BOOL bShift,BOOL bCtrl,BOOL FAR* EnableDefault)
{
//计算距离
if(Flags==miPolyToolInProgress) {//这句可有可无
if(ToolNum==MYTOOL_DISTANCE)
{
CMapXPoints pts;
long n;
long i;
try{
pts.AttachDispatch (Points, FALSE); // Get points Object
double dDistanceTot=0.0;
n=pts.GetCount ();
for (i=1; in;i++)
{
CMapXPoint pt1=pts.Item(i);
CMapXPoint pt2=pts.Item(i+1);
double d=m_ctrlMapX.Distance (pt1.GetX(),pt1.GetY(),pt2.GetX (),
pt2.GetY ());
dDistanceTot+=d;
}
CString str;
str.Format ("总距离为:%f",dDistanceTot);
//在状态栏输出距离
((CMainFrame*)AfxGetMainWnd())-m_wndStatusBar.SetPaneText(0,str);
}
catch (COleDispatchException *e){
e-ReportError ();
e-Delete ();
}
catch (COleException *e){
e-ReportError ();
e-Delete ();
}
}
}//if(Flags==miPolyToolInProgress)
}

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

//4.调用工具
void CMapXSampleView::OnMapToolDistancetool()
{
m_ctrlMapX.SetCurrentTool(MYTOOL_DISTANCE); //

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

}

展开更多 50%)
分享

猜你喜欢

mapx之vc自定义测距工具(PolyToolUsed事件)

编程语言 网络编程
mapx之vc自定义测距工具(PolyToolUsed事件)

Javascript框架的自定义事件

Web开发
Javascript框架的自定义事件

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

VC中自定义CRichEditCtrl控件

编程语言 网络编程
VC中自定义CRichEditCtrl控件

浅析C#的事件处理和自定义事件

编程语言 网络编程
浅析C#的事件处理和自定义事件

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用VC++创建自定义向导程序

C语言教程 C语言函数
用VC++创建自定义向导程序

Delphi+MapX5中使用自定义字体符号

编程语言 网络编程
Delphi+MapX5中使用自定义字体符号

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

widechar单双字节转换函数Asc

widechar单双字节转换函数Asc

页面锁定的锁定方案--多客户环境下VB数据库编程之(7)

页面锁定的锁定方案--多客户环境下VB数据库编程之(7)
下拉加载更多内容 ↓