📄 mapview.cpp
字号:
// MapView.cpp : 实现文件
//
#include "stdafx.h"
#include "MakeRoads.h"
#include "MapView.h"
// CMapView
IMPLEMENT_DYNCREATE(CMapView, CFormView)
CMapView::CMapView()
: CFormView(CMapView::IDD)
, m_bPreviousZoom(0)
, m_bCurrentZoom(0)
, m_bPreviousCenterX(0)
, m_bPreviousCenterY(0)
, m_bCurrentCenterX(0)
, m_bCurrentCenterY(0)
{
}
CMapView::~CMapView()
{
}
void CMapView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
DDX_Control(pDX, IDC_MAPVIEW, m_pMapX);
}
BEGIN_MESSAGE_MAP(CMapView, CFormView)
ON_COMMAND(ID_MAPXZOOMIN,CMapView::OnMapxzoomin)
ON_COMMAND(ID_MAPXZOOMOUT,CMapView::OnMapxzoomout)
ON_COMMAND(ID_MAPXPAN,CMapView::OnMapxpan)
ON_COMMAND(ID_MAPXSELECT,CMapView::OnMapxselect)
ON_COMMAND(ID_MAPXRECTSELECT,CMapView::OnMapxrectselect)
ON_COMMAND(ID_MAPXPOLYGONSELECT,CMapView::OnMapxpolygonselect)
ON_COMMAND(ID_MAPXLAYERS,CMapView::OnMapxlayers)
ON_COMMAND(ID_MAPXEXTENT,CMapView::OnMapxextent)
ON_COMMAND(ID_MAPXPREVIOUS,CMapView::OnMapxprevious)
ON_COMMAND(ID_MAPXARROW,CMapView::OnMapxarrow)
ON_WM_PAINT()
END_MESSAGE_MAP()
// CMapView 诊断
#ifdef _DEBUG
void CMapView::AssertValid() const
{
CFormView::AssertValid();
}
#ifndef _WIN32_WCE
void CMapView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif
#endif //_DEBUG
// CMapView 消息处理程序
void CMapView::OnMapxzoomin()
{
m_pMapX.SetCurrentTool(miZoomInTool);
}
void CMapView::OnMapxzoomout()
{
m_pMapX.SetCurrentTool(miZoomOutTool);
}
void CMapView::OnMapxpan()
{
m_pMapX.SetCurrentTool(miPanTool);
}
void CMapView::OnMapxselect()
{
m_pMapX.SetCurrentTool(miSelectTool);
}
void CMapView::OnMapxrectselect()
{
m_pMapX.SetCurrentTool(miRectSelectTool);
}
void CMapView::OnMapxpolygonselect()
{
m_pMapX.SetCurrentTool(miPolygonSelectTool);
}
void CMapView::OnMapxlayers()
{
m_pMapX.GetLayers().LayersDlg();
}
void CMapView::OnMapxextent()
{
m_pMapX.SetBounds(m_pMapX.GetLayers().GetBounds());
}
void CMapView::OnMapxarrow()
{
m_pMapX.SetCurrentTool(miArrowTool);
}
void CMapView::OnMapxprevious()
{
try{
m_pMapX.SetZoom(m_bPreviousZoom);
m_pMapX.SetCenterX(m_bPreviousCenterX);
m_pMapX.SetCenterY(m_bPreviousCenterY);
}catch(COleDispatchException * e){
e->ReportError();
e->Delete();
}catch(COleException * e){
e->ReportError();
e->Delete();
}
}BEGIN_EVENTSINK_MAP(CMapView, CFormView)
ON_EVENT(CMapView, IDC_MAPVIEW, 6, CMapView::MapViewChangedMapview, VTS_NONE)
END_EVENTSINK_MAP()
void CMapView::MapViewChangedMapview()
{
// TODO: 在此处添加消息处理程序代码
if(m_pMapX.m_hWnd)
{
try{
m_bPreviousZoom = m_bCurrentZoom;
m_bPreviousCenterX = m_bCurrentCenterX;
m_bPreviousCenterY = m_bCurrentCenterY;
m_bCurrentZoom = m_pMapX.GetZoom();
m_bCurrentCenterX = m_pMapX.GetCenterX();
m_bCurrentCenterY = m_pMapX.GetCenterY();
}catch(COleDispatchException *e){
e->ReportError();
e->Delete();
}catch(COleException *e){
e->ReportError();
e->Delete();
}
}
}
void CMapView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
CRect rect;
GetClientRect(rect);
if(rect.Width()!=0 && rect.Height()!=0)
m_pMapX.MoveWindow(0,0,rect.Width(),rect.Height(),TRUE);
m_bCurrentZoom = m_pMapX.GetZoom();
m_bCurrentCenterX = m_pMapX.GetCenterX();
m_bCurrentCenterY = m_pMapX.GetCenterY();
// 不为绘图消息调用 CFormView::OnPaint()
}
CMapX* CMapView::GetMapX(void)
{
return &m_pMapX;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -