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); 
	} 
	 
}