📄 geopadview.cpp
字号:
/************************************************************
//
// 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 + -