看看下面的程序代码吧?
// 功能:计算地图比例尺
// 返回值:地图比例尺
double CEnvironment::CalcScale(CMap1* map)
{
HWND hWnd = (HWND)map->GetHWnd();
HDC hDC = GetDC(hWnd);
double dpix = GetDeviceCaps(hDC, LOGPIXELSX);
MPoint* pts = new MPoint[2];
CMoRectangle extent = map->GetExtent();
pts[0].x = extent.GetLeft();
pts[0].y = extent.GetTop();
pts[1].x = extent.GetRight();
pts[1].y = extent.GetTop();
// 计算pts点对象数组定义的点之间的长度
double dLen1 = CalcLenght(pts,2);
CRect rect;
map->GetWindowRect(&rect);
double dLen2 = rect.Width() / dpix * 2.54 /100; delete pts;
pts = NULL; return dLen1 / dLen2;
}
/////////////////下面是显示经纬度的
CMoPoint point;
point = m_Map.ToMapPoint(X, Y);
CString str;
str.Format("东经=%f, 北纬=%f", point.GetX(), point.GetY());
CStatusBar* pBar = &((CMainFrame*)AfxGetMainWnd())->m_wndStatusBar;
int index=pBar->CommandToIndex(ID_ROW_COL);
pBar->SetPaneText(index,str);
// 功能:计算地图比例尺
// 返回值:地图比例尺
double CEnvironment::CalcScale(CMap1* map)
{
HWND hWnd = (HWND)map->GetHWnd();
HDC hDC = GetDC(hWnd);
double dpix = GetDeviceCaps(hDC, LOGPIXELSX);
MPoint* pts = new MPoint[2];
CMoRectangle extent = map->GetExtent();
pts[0].x = extent.GetLeft();
pts[0].y = extent.GetTop();
pts[1].x = extent.GetRight();
pts[1].y = extent.GetTop();
// 计算pts点对象数组定义的点之间的长度
double dLen1 = CalcLenght(pts,2);
CRect rect;
map->GetWindowRect(&rect);
double dLen2 = rect.Width() / dpix * 2.54 /100; delete pts;
pts = NULL; return dLen1 / dLen2;
}
/////////////////下面是显示经纬度的
CMoPoint point;
point = m_Map.ToMapPoint(X, Y);
CString str;
str.Format("东经=%f, 北纬=%f", point.GetX(), point.GetY());
CStatusBar* pBar = &((CMainFrame*)AfxGetMainWnd())->m_wndStatusBar;
int index=pBar->CommandToIndex(ID_ROW_COL);
pBar->SetPaneText(index,str);
解决方案 »
- Hook WM_MOUSEWHEEL如何得到滚轮向前向后的滚动次数
- CDhtmldialog 点击mailto超链接后关闭outlook,然后点击界面上的其他按钮没有响应
- 按一下键,竟然发出了好几个按下键的消息,太快了!
- mfc总结
- 关于使用CBCGPPropertySheet的问题
- 学了两天VC,我发现VC很easy,不过这么个小问题问了几遍了,堂堂大中国难道就没有一个人知道吗?漂亮女模特跪求各位给我一些现成的代码
- 跪求多线程的代码,下载地址也行?
- 在VC6下如何编译纯DOS程序
- 我想问下 电脑HDMI 或者VGA接口 连接电视 通信技术 是否属于COM 通信技术 请问有什么这方面的资料
- 请问在哪里可以下载Purify for Windows ????
- 请问如何获取系统窗口的句柄
- 怪事:Sleep(1)不再是1毫秒,何解?
moPoint.CreateDispatch("MapObjects2.Point");
moPoint.SetX(lfMapX);
moPoint.SetY(lfMapY);
float fX,fY;
m_pMapObject2->FromMapPoint(moPoint.m_lpDispatch,&fX,&fY);
...
}