www.pudn.com > MapXgis.rar > MapXSampleMDIView.cpp
// MapXSampleMDIView.cpp : CMapXSampleMDIView 类的实现
//
#include "stdafx.h"
#include "MapXSampleMDI.h"
#include "MapXSampleMDIDoc.h"
#include "MapXSampleMDIView.h"
#include ".\mapxsamplemdiview.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define CUST_INFO 1
// CMapXSampleMDIView
IMPLEMENT_DYNCREATE(CMapXSampleMDIView, CView)
BEGIN_MESSAGE_MAP(CMapXSampleMDIView, CView)
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
ON_WM_CREATE()
ON_WM_SIZE()
ON_WM_SETFOCUS()
ON_COMMAND(ID_MAP_TOOL_PAN, OnMapToolPan)
ON_COMMAND(ID_MAP_TOOL_ZOOMIN, OnMapToolZoomin)
ON_COMMAND(ID_MAP_TOOL_ZOOMOUT, OnMapToolZoomout)
ON_UPDATE_COMMAND_UI(ID_MAP_TOOL_PAN, OnUpdateMapToolPan)
ON_UPDATE_COMMAND_UI(ID_MAP_TOOL_ZOOMIN, OnUpdateMapToolZoomin)
ON_UPDATE_COMMAND_UI(ID_MAP_TOOL_ZOOMOUT, OnUpdateMapToolZoomout)
END_MESSAGE_MAP()
BEGIN_EVENTSINK_MAP(CMapXSampleMDIView, CView)
ON_EVENT(CMapXSampleMDIView, IDC_MAP, MAPX_DISPID_MAPVIEWCHANGED, OnMapViewChanged, VTS_NONE)
END_EVENTSINK_MAP()
// CMapXSampleMDIView 构造/析构
CMapXSampleMDIView::CMapXSampleMDIView()
{
// TODO: 在此处添加构造代码
}
CMapXSampleMDIView::~CMapXSampleMDIView()
{
}
BOOL CMapXSampleMDIView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
// 样式
return CView::PreCreateWindow(cs);
}
// CMapXSampleMDIView 绘制
void CMapXSampleMDIView::OnDraw(CDC* /*pDC*/)
{
CMapXSampleMDIDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
}
// CMapXSampleMDIView 打印
BOOL CMapXSampleMDIView::OnPreparePrinting(CPrintInfo* pInfo)
{
// 默认准备
return DoPreparePrinting(pInfo);
}
void CMapXSampleMDIView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 打印前添加额外的初始化
}
void CMapXSampleMDIView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 打印后添加清除过程
}
// CMapXSampleMDIView 诊断
#ifdef _DEBUG
void CMapXSampleMDIView::AssertValid() const
{
CView::AssertValid();
}
void CMapXSampleMDIView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CMapXSampleMDIDoc* CMapXSampleMDIView::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMapXSampleMDIDoc)));
return (CMapXSampleMDIDoc*)m_pDocument;
}
#endif //_DEBUG
// CMapXSampleMDIView 消息处理程序
int CMapXSampleMDIView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
//创建主图控件
if (!m_ctrlMapX.Create(NULL, WS_VISIBLE, CRect(0,0,100,100), this,IDC_MAP))
return -1;
//创建缺省工具栏
m_ctrlMapX.CreateCustomTool(CUST_INFO, miToolTypePoint, miCrossCursor);
return 0;
}
void CMapXSampleMDIView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
if (cx != 0 && cy != 0)
m_ctrlMapX.MoveWindow(0,0,cx,cy,TRUE);
}
void CMapXSampleMDIView::OnSetFocus(CWnd* pOldWnd)
{
CView::OnSetFocus(pOldWnd);
// TODO: 在此处添加消息处理程序代码
m_ctrlMapX.SetFocus();
}
void CMapXSampleMDIView::OnMapToolPan()
{
m_ctrlMapX.SetCurrentTool(miPanTool);
}
void CMapXSampleMDIView::OnMapToolZoomin()
{
m_ctrlMapX.SetCurrentTool(miZoomInTool);
}
void CMapXSampleMDIView::OnMapToolZoomout()
{
m_ctrlMapX.SetCurrentTool(miZoomOutTool);
}
void CMapXSampleMDIView::OnUpdateMapToolArrow(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_ctrlMapX.GetCurrentTool() == miArrowTool);
//Check the menu item if in use
}
void CMapXSampleMDIView::OnUpdateMapToolPan(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_ctrlMapX.GetCurrentTool() == miPanTool);
} //Check the menu item if in use
void CMapXSampleMDIView::OnUpdateMapToolZoomin(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_ctrlMapX.GetCurrentTool() == miZoomInTool);
} //Check the menu item if in use
void CMapXSampleMDIView::OnUpdateMapToolZoomout(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_ctrlMapX.GetCurrentTool() == miZoomOutTool);
} //Check the menu item if in use
void CMapXSampleMDIView::OnMapViewChanged()
{
CMapXRectangle rect; //声明矩形变量
rect.CreateDispatch(rect.GetClsid());
//获取主图的边界,根据这个边界值,在鹰眼图上添加一个矩形Feature
rect = m_ctrlMapX.GetBounds();
CDoubleRect doubleRect;
//获取主图的边界,根据这个边界值,在鹰眼图上添加一个矩形Feature
doubleRect.X1 = rect.GetXMin(); //获得矩形左上顶点x坐标
doubleRect.Y1 = rect.GetYMin(); //获得矩形左上顶点y坐标
doubleRect.X2 = rect.GetXMax(); //获得矩形右下顶点x坐标
doubleRect.Y2 = rect.GetYMax(); //获得矩形右下顶点y坐标
//发送消息通知mapX_eagle_bar
AfxGetMainWnd()->SendMessage(WM_MAPXVIEW_CHANGED, 0, (LPARAM)&doubleRect);
}
void CMapXSampleMDIView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
// TODO: 在此添加专用代码和/或调用基类
CMapXSampleMDIDoc* pDoc=GetDocument();
double x=pDoc->CenterPointX;
double y=pDoc->CenterPointY;
if(int(x)!=0 && int(y)!=0)
{
double zoom=m_ctrlMapX.GetZoom();
m_ctrlMapX.ZoomTo(zoom,x,y);
}
}