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

📄 pathanalystview.cpp

📁 Embedded vc++下开发的路经分析程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -