📄 pathanalystview.cpp
字号:
// PathAnalystView.cpp : implementation of the CPathAnalystView class
//
#include "stdafx.h"
#include "PathAnalyst.h"
#include "PathAnalystDoc.h"
#include "PathAnalystView.h"
#include "DlgSelect.h"
#include "DlgPathAnalyseSetting.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define PATH_ANALYSE 10
/////////////////////////////////////////////////////////////////////////////
// CPathAnalystView
IMPLEMENT_DYNCREATE(CPathAnalystView, CView)
BEGIN_MESSAGE_MAP(CPathAnalystView, CView)
//{{AFX_MSG_MAP(CPathAnalystView)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_COMMAND(ID_FILE_CLOSE, OnFileClose)
ON_COMMAND(ID_MAP_ZOOMIN, OnMapZoomin)
ON_COMMAND(ID_MAP_ZOOMOUT, OnMapZoomout)
ON_COMMAND(ID_MAP_PAN, OnMapPan)
ON_COMMAND(ID_MAP_POINT_SELECT, OnMapPointSelect)
ON_COMMAND(ID_MAP_VIEW_ENTIRE, OnMapViewEntire)
ON_COMMAND(ID_MAP_REFRESH, OnMapRefresh)
ON_UPDATE_COMMAND_UI(ID_MAP_ZOOMIN, OnUpdateMapZoomin)
ON_UPDATE_COMMAND_UI(ID_MAP_ZOOMOUT, OnUpdateMapZoomout)
ON_UPDATE_COMMAND_UI(ID_MAP_PAN, OnUpdateMapPan)
ON_UPDATE_COMMAND_UI(ID_MAP_POINT_SELECT, OnUpdateMapPointSelect)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_COMMAND(ID_FILE_ADD_LAYER, OnFileAddLayer)
ON_COMMAND(ID_ANALYSE_SETTING, OnAnalyseSetting)
ON_COMMAND(ID_PATH_ANALYSE, OnPathAnalyse)
ON_COMMAND(ID_EXPORT_ADJACENT_MATRIX, OnExportAdjacentMatrix)
ON_UPDATE_COMMAND_UI(ID_PATH_ANALYSE, OnUpdatePathAnalyse)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPathAnalystView construction/destruction
CPathAnalystView::CPathAnalystView()
{//初始化参数
m_bFileOpened = false;
m_nAnalystMode = -1;
m_nAnalystModel = -1;
m_strUnits = _T("");
m_bRuleParamSetted = FALSE;
m_nAction = -1;
m_nFromNodeID = -1;
}
CPathAnalystView::~CPathAnalystView()
{
}
BOOL CPathAnalystView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CPathAnalystView drawing
void CPathAnalystView::OnDraw(CDC* pDC)
{
CPathAnalystDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect rcClient;
GetClientRect( &rcClient );
if(!m_bFileOpened)
{
//显示启动画面,地图还没有显示的时候!
CDC dc;
dc.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.LoadBitmap( IDB_BITMAP_START_PAGE );
CBitmap *pBitmapSaved = dc.SelectObject(&bmp);
pDC->BitBlt(0,0,rcClient.Width(),rcClient.Height(),&dc,0,0,SRCCOPY);
dc.SelectObject(pBitmapSaved);
dc.DeleteDC();
bmp.DeleteObject();
}
else
{
//显示地图
m_MapWnd.OnDraw(pDC, rcClient,rcClient);
if (m_nAction == PATH_ANALYSE)
{
DisplayNodePoint(m_pntFromNode);//画出选择的起始节点
DisplayNodePoint(m_pntToNode); //画出选择的终止节点
}
}
}
/////////////////////////////////////////////////////////////////////////////
// CPathAnalystView diagnostics
#ifdef _DEBUG
void CPathAnalystView::AssertValid() const
{
CView::AssertValid();
}
void CPathAnalystView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CPathAnalystDoc* CPathAnalystView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CPathAnalystDoc)));
return (CPathAnalystDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CPathAnalystView message handlers
void CPathAnalystView::OnFileOpen()
{
//打开选择的地图,否则新建Untitled地图,等待添加图层
CFileDialog dlgFile(true, _T("pmw|pmw|*.*"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("WorkSpace Files (*.pmw)|*.pmw") );
if( dlgFile.DoModal() == IDOK )
{
//如果已经打开工作空间文件,则关闭
if(theApp.m_WorkSpace.IsOpen())
{
theApp.m_WorkSpace.Close();
m_MapWnd.Close();
m_bFileOpened = false;
}
//获得图形文件的完整路径及文件名
CString strFileName = dlgFile.GetPathName();
//打开工作空间
if( theApp.m_WorkSpace.Open( strFileName ) )
{
CSeMaps *pMaps = theApp.m_WorkSpace.GetMaps();
if( pMaps )
{
CSeMapDef MapDef;
if ( pMaps->GetMapCount() != 0 )
{
//打开选择对话框
CDlgSelect dlg;
dlg.m_bMap = true;
if ( dlg.DoModal() == IDOK )
{
if( pMaps->GetMap( dlg.m_strMapName, MapDef ) )
{//打开选择的地图
if(m_MapWnd.OpenMap(MapDef))
{
m_MapWnd.Refresh();
}
}
}
}
//如没有地图,则新建地图Untitled,等待添加图层
else
{
MapDef.m_strMapName = _T("Untitled");
pMaps->AddMap( MapDef );
}
}
m_bFileOpened = true;
}
}
}
void CPathAnalystView::OnFileAddLayer()
{
//在当前地图中添加图层
CDlgSelect dlg;
if ( dlg.DoModal() == IDOK )//打开选择数据集对话框
{
CSeDataSource *pDataSource = theApp.m_WorkSpace.GetDataSourceByAlias( dlg.m_strDatasourceAlias );
if ( pDataSource )
{
CSeDataset *pDataset = pDataSource->GetDataset( dlg.m_strDatasetName );
if (pDataset)
{
//将所数据集添加到地图中作为一个图层
m_MapWnd.AddLayer(pDataset);
m_MapWnd.Refresh();
}
}
}
}
void CPathAnalystView::OnFileClose()
{
//关闭工作空间
theApp.m_WorkSpace.Close(); //关闭工作空间
m_MapWnd.Close(); //关闭显示管理器
m_bFileOpened = false;
m_MapWnd.Refresh();
}
void CPathAnalystView::OnInitialUpdate()
{
//初始化地图窗口
m_MapWnd.OnInitialUpdate( &theApp.m_WorkSpace, this );
CView::OnInitialUpdate();
}
void CPathAnalystView::OnMapZoomin()
{//放大
m_MapWnd.SetAction(CSeDrawParameters::uaZoomIn);
m_nAction = -1; //防止和路径分析冲突
}
void CPathAnalystView::OnMapZoomout()
{//缩小
m_MapWnd.SetAction(CSeDrawParameters::uaZoomOut);
m_nAction = -1;//防止和路径分析冲突
}
void CPathAnalystView::OnMapPan()
{//平移
m_MapWnd.SetAction(CSeDrawParameters::uaPan);
m_nAction = -1;//防止和路径分析冲突
}
void CPathAnalystView::OnMapPointSelect()
{//点选
m_MapWnd.SetAction( CSeDrawParameters::uaPointModeSelect );
}
void CPathAnalystView::OnMapViewEntire()
{//整幅显示
m_MapWnd.ViewEntire();
}
void CPathAnalystView::OnMapRefresh()
{//刷新
m_MapWnd.Refresh();
}
void CPathAnalystView::OnUpdateMapZoomin(CCmdUI* pCmdUI)
{ //设置菜单和工具条状态
pCmdUI->SetCheck(m_MapWnd.GetAction()==CSeDrawParameters::uaZoomIn );
}
void CPathAnalystView::OnUpdateMapZoomout(CCmdUI* pCmdUI)
{ //设置菜单和工具条状态
pCmdUI->SetCheck(m_MapWnd.GetAction()==CSeDrawParameters::uaZoomOut );
}
void CPathAnalystView::OnUpdateMapPan(CCmdUI* pCmdUI)
{ //设置菜单和工具条状态
pCmdUI->SetCheck(m_MapWnd.GetAction()==CSeDrawParameters::uaPan );
}
void CPathAnalystView::OnUpdateMapPointSelect(CCmdUI* pCmdUI)
{//设置菜单和工具条状态
pCmdUI->SetCheck( m_MapWnd.GetAction()==CSeDrawParameters::uaPointModeSelect );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -