看看下面的程序代码吧?
// 功能:计算地图比例尺
// 返回值:地图比例尺
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);