⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapview.cpp

📁 mapx在vc.net上的应用框架
💻 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 + -