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

📄 geopadview.cpp

📁 一个开源的基于WindowsCE的GIS系统。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/************************************************************
//
//		Copyright (C) 2002, Geo Soft 
//		All rights reserved
//		mail: khuntipm@yahoo.com
//		web:  www.geosoftindia.com
//		Khunti Popat
//
************************************************************/
// GeoPADView.cpp : implementation of the CGeoPADView class
//

#include "stdafx.h"
#include "GeoPAD.h"

#include "GeoPADDoc.h"
#include "GeoPADView.h"
#include "GeoPADDll.h"
#include "ThemeTable.h"
#include "QueryResult.h"
#include "DistUnit.h"
#include "BuffUnit.h"
#include "Find.h"
#include "DefLabel.h"
#include "MainFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


CGeoPADCtrl geoPAD;
extern CStatusBar	m_wndStatusBar;
extern int zid;
extern int unit;
extern int dist;
/////////////////////////////////////////////////////////////////////////////
// CGeoPADView

IMPLEMENT_DYNCREATE(CGeoPADView, CView)

BEGIN_MESSAGE_MAP(CGeoPADView, CView)
	//{{AFX_MSG_MAP(CGeoPADView)
	ON_COMMAND(ID_ADDTHEME, OnAddtheme)
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONUP()
	ON_UPDATE_COMMAND_UI(ID_ADDTHEME, OnUpdateAddtheme)
	ON_COMMAND(ID_LAYER, OnLayer)
	ON_UPDATE_COMMAND_UI(ID_LAYER, OnUpdateLayer)
	ON_COMMAND(ID_ZOOM_FULLEXT, OnZoomFullext)
	ON_UPDATE_COMMAND_UI(ID_ZOOM_FULLEXT, OnUpdateZoomFullext)
	ON_COMMAND(ID_ZOOM_ACTIVE, OnZoomActive)
	ON_UPDATE_COMMAND_UI(ID_ZOOM_ACTIVE, OnUpdateZoomActive)
	ON_COMMAND(ID_ZOOM_IN, OnZoomIn)
	ON_UPDATE_COMMAND_UI(ID_ZOOM_IN, OnUpdateZoomIn)
	ON_COMMAND(ID_ZOOM_IN_FIX, OnZoomInFix)
	ON_UPDATE_COMMAND_UI(ID_ZOOM_IN_FIX, OnUpdateZoomInFix)
	ON_COMMAND(ID_ZOOM_OUT, OnZoomOut)
	ON_UPDATE_COMMAND_UI(ID_ZOOM_OUT, OnUpdateZoomOut)
	ON_COMMAND(ID_ZOOM_OUT_FIX, OnZoomOutFix)
	ON_UPDATE_COMMAND_UI(ID_ZOOM_OUT_FIX, OnUpdateZoomOutFix)
	ON_COMMAND(ID_ZOOM_SEL, OnZoomSel)
	ON_UPDATE_COMMAND_UI(ID_ZOOM_SEL, OnUpdateZoomSel)
	ON_COMMAND(ID_PAN, OnPan)
	ON_UPDATE_COMMAND_UI(ID_PAN, OnUpdatePan)
	ON_COMMAND(ID_CENTER_XY, OnCenterXy)
	ON_UPDATE_COMMAND_UI(ID_CENTER_XY, OnUpdateCenterXy)
	ON_COMMAND(ID_NEW_PRJ, OnNewPrj)
	ON_COMMAND(ID_OPEN_PRJ, OnOpenPrj)
	ON_COMMAND(ID_SAVE_PRJ, OnSavePrj)
	ON_UPDATE_COMMAND_UI(ID_SAVE_PRJ, OnUpdateSavePrj)
	ON_COMMAND(ID_SAVE_PRJ_AS, OnSavePrjAs)
	ON_UPDATE_COMMAND_UI(ID_SAVE_PRJ_AS, OnUpdateSavePrjAs)
	ON_COMMAND(ID_FIND, OnFind)
	ON_COMMAND(ID_FREEH_MEASURE, OnFreehMeasure)
	ON_COMMAND(ID_GOTO, OnGoto)
	ON_COMMAND(ID_IDENTIFY, OnIdentify)
	ON_COMMAND(ID_MEASURE, OnMeasure)
	ON_COMMAND(ID_UNIT, OnUnit)
	ON_COMMAND(ID_PT_SELECT, OnPtSelect)
	ON_COMMAND(ID_RASTER_ORIGINAL, OnRasterOriginal)
	ON_COMMAND(ID_RASTER_LIGHTEN, OnRasterLighten)
	ON_COMMAND(ID_RASTER_DARKEN, OnRasterDarken)
	ON_COMMAND(ID_QUERY, OnQuery)
	ON_COMMAND(ID_QUERYRESULT, OnQueryresult)
	ON_COMMAND(ID_THEMETABLE, OnThemetable)
	ON_COMMAND(ID_AUTO_LABEL, OnAutoLabel)
	ON_COMMAND(ID_ARR_LABEL, OnArrLabel)
	ON_COMMAND(ID_CLEAR_LABEL, OnClearLabel)
	ON_COMMAND(ID_DEF_ARR_LABEL, OnDefArrLabel)
	ON_COMMAND(ID_DEF_LABEL, OnDefLabel)
	ON_COMMAND(ID_DEL_LABEL, OnDelLabel)
	ON_COMMAND(ID_DELALL_LABEL, OnDelallLabel)
	ON_COMMAND(ID_LABEL_ONOFF, OnLabelOnoff)
	ON_COMMAND(ID_SEL_LABEL, OnSelLabel)
	ON_COMMAND(ID_NORMAL, OnNormal)
	ON_COMMAND(ID_REFRESH, OnRefresh)
	ON_COMMAND(ID_REMOVE_SEL, OnRemoveSel)
	ON_COMMAND(ID_ID_ZOOM_FEATURE, OnIdZoomFeature)
	ON_COMMAND(ID_ID_CENTER, OnIdCenter)
	ON_COMMAND(ID_ABOUT_GEOPAD, OnAboutGeopad)
	ON_COMMAND(ID_NEWTHEME, OnNewtheme)
	ON_UPDATE_COMMAND_UI(ID_NEWTHEME, OnUpdateNewtheme)
	ON_COMMAND(ID_EDIT_VERTEX, OnEditVertex)
	ON_UPDATE_COMMAND_UI(ID_EDIT_VERTEX, OnUpdateEditVertex)
	ON_WM_ERASEBKGND()
	ON_COMMAND(ID_SELECT, OnSelect)
	ON_UPDATE_COMMAND_UI(ID_SELECT, OnUpdateSelect)
	ON_COMMAND(ID_ZOOM_SEL_FEA, OnZoomSelFea)
	ON_UPDATE_COMMAND_UI(ID_ZOOM_SEL_FEA, OnUpdateZoomSelFea)
	ON_COMMAND(ID_FP_CENTERONSELECTEDFEATURE, OnFpCenteronselectedfeature)
	ON_UPDATE_COMMAND_UI(ID_FP_CENTERONSELECTEDFEATURE, OnUpdateFpCenteronselectedfeature)
	ON_COMMAND(ID_FP_GOTOSELECTEDFEATURE, OnFpGotoselectedfeature)
	ON_UPDATE_COMMAND_UI(ID_FP_GOTOSELECTEDFEATURE, OnUpdateFpGotoselectedfeature)
	ON_UPDATE_COMMAND_UI(ID_FP_DELETEFEATURE, OnUpdateFpDeletefeature)
	ON_COMMAND(ID_FP_DELETEFEATURE, OnFpDeletefeature)
	ON_UPDATE_COMMAND_UI(ID_CENTER_GPS, OnUpdateCenterGps)
	ON_COMMAND(ID_CENTER_GPS, OnCenterGps)
	ON_UPDATE_COMMAND_UI(ID_GPS_GPSACTIVE, OnUpdateGpsGpsactive)
	ON_COMMAND(ID_GPS_GPSACTIVE, OnGpsGpsactive)
	ON_UPDATE_COMMAND_UI(ID_SEL_AT_GPS, OnUpdateSelAtGps)
	ON_COMMAND(ID_SEL_AT_GPS, OnSelAtGps)
	ON_UPDATE_COMMAND_UI(ID_BUFF_QUERY, OnUpdateBuffQuery)
	ON_COMMAND(ID_BUFF_QUERY, OnBuffQuery)
	ON_WM_TIMER()
	ON_COMMAND(ID_GEOPAD_HELP, OnGeopadHelp)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CGeoPADView construction/destruction

CGeoPADView::CGeoPADView()
{
	// TODO: add construction code here
	bOpen = false;
	editVertex=false;
	action = 0;
	dist = -1;
	activeGPS = false;
}

CGeoPADView::~CGeoPADView()
{
}

BOOL CGeoPADView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CGeoPADView drawing

void CGeoPADView::OnDraw(CDC* pDC)
{
	CGeoPADDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	if(bOpen)
	{
	   geoPAD.GeoPAD12(pDC->m_hDC);
//	   CString sc(geoPAD.GeoPAD90());
//	   m_wndStatusBar.SetPaneText(1,_T("ssadassasc"));
//	   m_wndStatusBar.Invalidate();
//	   sc.Empty();
	}

	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CGeoPADView diagnostics

#ifdef _DEBUG
void CGeoPADView::AssertValid() const
{
	CView::AssertValid();
}

void CGeoPADView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CGeoPADDoc* CGeoPADView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CGeoPADDoc)));
	return (CGeoPADDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CGeoPADView message handlers

void CGeoPADView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default

	if(action == 1000)
		geoPAD.GeoPAD92(point.x,point.y,dist,unit);

	CClientDC dc(this);
	geoPAD.GeoPAD13(dc.m_hDC,3,action,point.x,point.y);
	geoPAD.GeoPAD13(dc.m_hDC,1,action,point.x,point.y);
	CView::OnLButtonDown(nFlags, point);
}

void CGeoPADView::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CClientDC dc(this);
	geoPAD.GeoPAD14(action);
	geoPAD.GeoPAD13(dc.m_hDC,2,action,point.x,point.y);
	CView::OnMouseMove(nFlags, point);
}

void CGeoPADView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default

	if(editVertex)
	{
		  CMenu menu;
		  menu.LoadMenu(IDR_MAINFRAME);
		  CMenu* file_menu = menu.GetSubMenu(9); 
		  ASSERT(file_menu);
		  file_menu->TrackPopupMenu(TPM_LEFTALIGN, point.x,point.y, this);
	}
	CClientDC dc(this);
	geoPAD.GeoPAD13(dc.m_hDC,4,action,point.x,point.y);
	Invalidate();
	CView::OnLButtonUp(nFlags, point);
}

void CGeoPADView::OnLayer() 
{
	// TODO: Add your command handler code here
	geoPAD.GeoPAD190();
	 Invalidate();
}

void CGeoPADView::OnUpdateLayer(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
//	pCmdUI->Enable(bOpen);
}

void CGeoPADView::OnZoomFullext() 
{
	// TODO: Add your command handler code here
	CRect rect;
    GetClientRect(&rect);
	geoPAD.GeoPAD15(NULL,rect.left,rect.top,rect.right,rect.bottom);
	Invalidate();
}
void CGeoPADView::OnUpdateZoomFullext(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//pCmdUI->Enable(bOpen);	
}

void CGeoPADView::OnZoomActive() 
{
	// TODO: Add your command handler code here
	geoPAD.GeoPAD19();
	Invalidate();
}

void CGeoPADView::OnUpdateZoomActive(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//pCmdUI->Enable(bOpen);	
}

void CGeoPADView::OnZoomIn() 
{
	// TODO: Add your command handler code here
	action = 2;	
}

void CGeoPADView::OnUpdateZoomIn(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//pCmdUI->Enable(bOpen);	
}

void CGeoPADView::OnZoomInFix() 
{
	// TODO: Add your command handler code here
	geoPAD.GeoPAD16(2);
	Invalidate();
}

void CGeoPADView::OnUpdateZoomInFix(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//pCmdUI->Enable(bOpen);	
}

void CGeoPADView::OnZoomOut() 
{
	// TODO: Add your command handler code here
	action = 3;
}

void CGeoPADView::OnUpdateZoomOut(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//pCmdUI->Enable(bOpen);	
}

void CGeoPADView::OnZoomOutFix() 
{
	// TODO: Add your command handler code here
	geoPAD.GeoPAD16(1);
	Invalidate();
}

void CGeoPADView::OnUpdateZoomOutFix(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//pCmdUI->Enable(bOpen);	
}

void CGeoPADView::OnZoomSel() 
{
	// TODO: Add your command handler code here
	geoPAD.GeoPAD20();
	Invalidate();
}

void CGeoPADView::OnUpdateZoomSel(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//pCmdUI->Enable(bOpen);	
}

void CGeoPADView::OnPan() 
{
	// TODO: Add your command handler code here
	action = 1;
}

void CGeoPADView::OnUpdatePan(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//pCmdUI->Enable(bOpen);		
}

void CGeoPADView::OnCenterXy() 
{
	// TODO: Add your command handler code here
	action = 4;	
}

void CGeoPADView::OnUpdateCenterXy(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//pCmdUI->Enable(bOpen);		
}
void CGeoPADView::OnAddtheme() 
{
	// TODO: Add your command handler code here
	CFileDialog dlg(TRUE, NULL, TEXT(""),OFN_PROPERTY);
	dlg.m_ofn.lpstrFilter = TEXT("Shape Files (*.shp)\0*.shp\0 JPG Files (*.jpg)\0*.jpg\0 BMP Files (*.bmp)\0*.bmp\0 All (*.*)\0*.*\0"); 
	
	dlg.m_ofn.lpstrTitle = _T("Add Theme");

	if(dlg.DoModal() == IDOK)
	{
		geoPAD.GeoPAD1(SysAllocString(dlg.GetPathName()));
		CRect rect;
	    GetClientRect(&rect);
		geoPAD.GeoPAD15(NULL,rect.left,rect.top,rect.right,rect.bottom);
		bOpen = true;
		Invalidate();
	}
}
void CGeoPADView::OnUpdateAddtheme(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
}

void CGeoPADView::OnNewPrj() 
{
	// TODO: Add your command handler code here
	geoPAD.GeoPAD8();
	Invalidate();
	bOpen = false;
}

void CGeoPADView::OnOpenPrj() 
{
	// TODO: Add your command handler code here
	CFileDialog dlg(TRUE, NULL, TEXT(""),OFN_PROPERTY);
	dlg.m_ofn.lpstrFilter = TEXT("Geo Project Files (*.gsp)\0*.gsp\0");// All (*.*)\0*.*\0"); 
	
	dlg.m_ofn.lpstrTitle = _T("Open Geo Project File");

	if(dlg.DoModal() == IDOK)
	{
	  geoPAD.GeoPAD6(SysAllocString(dlg.GetPathName()));
      bOpen = true;
	  Invalidate();
	}	
}

void CGeoPADView::OnSavePrj() 
{
	// TODO: Add your command handler code here
	CFileDialog dlg(FALSE, NULL, TEXT("Untitled.gsp"),NULL);
	dlg.m_ofn.lpstrFilter = TEXT("Geo Project Files (*.gsp)\0*.gsp\0");// BMP Files (*.bmp)\0*.bmp\0 All (*.*)\0*.*\0"); 
	dlg.m_ofn.lpstrTitle = _T("Save Geo Project File");
	if(dlg.DoModal() == IDOK)
	  geoPAD.GeoPAD7(SysAllocString(dlg.GetPathName()));	
}

void CGeoPADView::OnUpdateSavePrj(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//pCmdUI->Enable(bOpen);	
}

void CGeoPADView::OnSavePrjAs() 
{
	// TODO: Add your command handler code here
	CFileDialog dlg(FALSE, NULL, TEXT("Untitled.gsp"),NULL);
	dlg.m_ofn.lpstrFilter = TEXT("Geo Project Files (*.gsp)\0*.gsp\0");// BMP Files (*.bmp)\0*.bmp\0 All (*.*)\0*.*\0"); 
	dlg.m_ofn.lpstrTitle = _T("Save Geo Project File As");
	if(dlg.DoModal() == IDOK)
	  geoPAD.GeoPAD7(SysAllocString(dlg.GetPathName()));	
}

void CGeoPADView::OnUpdateSavePrjAs(CCmdUI* pCmdUI) 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -