www.gusucode.com > 铁路列车车辆监控系统本系统要求PC机有两个串行通讯串口, > 铁路列车车辆监控系统本系统要求PC机有两个串行通讯串口,有线MODEM一个。其它配置没有严格的要求,一般配置即可。/铁路列车车辆监控系统/电子地图显示模块(江军)/EagleViewNew/DialogDisplay.cpp
// DialogDisplay.cpp : implementation file // #include "stdafx.h" #include "EagleView.h" #include "DialogDisplay.h" #include "MainFrm.h" #include "InfoWnd.h" #include "EagleViewView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") ///////////////////////////////////////////////////////////////////////////// // CDialogDisplay dialog CDialogDisplay::CDialogDisplay(CWnd* pParent /*=NULL*/) : CDialog(CDialogDisplay::IDD, pParent) { //{{AFX_DATA_INIT(CDialogDisplay) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } void CDialogDisplay::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDialogDisplay) DDX_Control(pDX, IDC_ADODC, m_Adodc); DDX_Control(pDX, IDC_DATAGRID, m_Datagrid); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDialogDisplay, CDialog) //{{AFX_MSG_MAP(CDialogDisplay) ON_BN_CLICKED(IDC_BUTTON_DISPLAY, OnButtonDisplay) ON_WM_TIMER() ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDialogDisplay message handlers void CDialogDisplay::OnButtonDisplay() { // TODO: Add your control notification handler code here Count=m_Datagrid.GetRow(); CString strRow; strRow.Format("%d",Count); HRESULT hr; try { hr = m_pConnection.CreateInstance("ADODB.Connection"); if(SUCCEEDED(hr)) { hr = m_pConnection->Open("driver=SQL Server;Server=.;DATABASE=MapXDB;UID=sa;PWD=;","","",adModeUnknown); } }catch(_com_error e) { CString errormessage; errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage); } _variant_t strSQL="select * from 轨迹"+strRow; m_pRecordset.CreateInstance("ADODB.Recordset"); m_pRecordset->Open(strSQL,_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText); m_pRecordset->MoveFirst(); CString strSQL0="select * from 轨迹"+strRow; m_Adodc.SetRecordSource(strSQL0); m_Adodc.Refresh(); TimerID=SetTimer(3,2000,NULL); } void CDialogDisplay::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default CMainFrame *pFram=(CMainFrame *)AfxGetApp()->m_pMainWnd; CEagleViewView *pView=(CEagleViewView* )pFram->m_SplitterH.GetPane(0,0); CString strRow; strRow.Format("%d",Count); _variant_t VStartPoint,VEndPoint; CString m_DataPoint1,m_DataPoint2; if(!m_pRecordset->adoEOF) { VStartPoint=m_pRecordset->GetCollect("起点"); VEndPoint=m_pRecordset->GetCollect("终点"); m_DataPoint1=VStartPoint.bstrVal; m_DataPoint2=VEndPoint.bstrVal; _RecordsetPtr m_pRecordset01; m_pRecordset01.CreateInstance("ADODB.Recordset"); _RecordsetPtr m_pRecordset02; m_pRecordset02.CreateInstance("ADODB.Recordset"); _variant_t strT1="select 城市号 from CityNum where 城市名 = '"+m_DataPoint1+"'"; _variant_t strT2="select 城市号 from CityNum where 城市名 = '"+m_DataPoint2+"'"; m_pRecordset01->Open(strT1,_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText); m_pRecordset02->Open(strT2,_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText); int Num1=m_pRecordset01->GetCollect("城市号").intVal; int Num2=m_pRecordset02->GetCollect("城市号").intVal; if(Num1>=300) { if(Num2>=300) { CString strNum1,strNum2; strNum1.Format("%d",Num1-300); strNum2.Format("%d",Num2-300); pView->m_mainmap.ZoomTo(1000,pView->m_mainmap.GetLayers().Item("省会").GetFind().Search(strNum1).GetCenterX(),pView->m_mainmap.GetLayers().Item("省会").GetFind().Search(strNum1).GetCenterY()); pView->m_mainmap.GetLayers().Item("省会").GetSelection().Add(pView->m_mainmap.GetLayers().Item("省会").GetFind().Search(strNum1)); pView->m_mainmap.GetLayers().Item("省会").GetSelection().Add(pView->m_mainmap.GetLayers().Item("省会").GetFind().Search(strNum2)); } else { CString strNum1,strNum2; strNum1.Format("%d",Num1-300); strNum2.Format("%d",Num2); pView->m_mainmap.ZoomTo(1000,pView->m_mainmap.GetLayers().Item("省会").GetFind().Search(strNum1).GetCenterX(),pView->m_mainmap.GetLayers().Item("省会").GetFind().Search(strNum1).GetCenterY()); pView->m_mainmap.GetLayers().Item("省会").GetSelection().Add(pView->m_mainmap.GetLayers().Item("省会").GetFind().Search(strNum1)); pView->m_mainmap.GetLayers().Item("一般城市").GetSelection().Add(pView->m_mainmap.GetLayers().Item("一般城市").GetFind().Search(strNum2)); } } else { if(Num2>=300) { CString strNum1,strNum2; strNum1.Format("%d",Num1); strNum2.Format("%d",Num2-300); pView->m_mainmap.ZoomTo(1000,pView->m_mainmap.GetLayers().Item("一般城市").GetFind().Search(strNum1).GetCenterX(),pView->m_mainmap.GetLayers().Item("一般城市").GetFind().Search(strNum1).GetCenterY()); pView->m_mainmap.GetLayers().Item("一般城市").GetSelection().Add(pView->m_mainmap.GetLayers().Item("一般城市").GetFind().Search(strNum1)); pView->m_mainmap.GetLayers().Item("省会").GetSelection().Add(pView->m_mainmap.GetLayers().Item("省会").GetFind().Search(strNum2)); } else { CString strNum1,strNum2; strNum1.Format("%d",Num1); strNum2.Format("%d",Num2); pView->m_mainmap.ZoomTo(1000,pView->m_mainmap.GetLayers().Item("一般城市").GetFind().Search(strNum1).GetCenterX(),pView->m_mainmap.GetLayers().Item("一般城市").GetFind().Search(strNum1).GetCenterY()); pView->m_mainmap.GetLayers().Item("一般城市").GetSelection().Add(pView->m_mainmap.GetLayers().Item("一般城市").GetFind().Search(strNum1)); pView->m_mainmap.GetLayers().Item("一般城市").GetSelection().Add(pView->m_mainmap.GetLayers().Item("一般城市").GetFind().Search(strNum2)); } } CString strRout; _RecordsetPtr m_pRecordset1; m_pRecordset1.CreateInstance("ADODB.Recordset"); _RecordsetPtr m_pRecordset2; m_pRecordset2.CreateInstance("ADODB.Recordset"); _variant_t strSQL01="SELECT 路段号 FROM RoutInfo where 路段起点='"+m_DataPoint1+"'and 路段终点 ='"+m_DataPoint2+"'"; _variant_t strSQL02="SELECT 路段号 FROM RoutInfo where 路段起点='"+m_DataPoint2+"'and 路段终点 ='"+m_DataPoint1+"'"; m_pRecordset1->Open(strSQL01,_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText); m_pRecordset2->Open(strSQL02,_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText); if(m_pRecordset1->GetRecordCount()!=0) { strRout=m_pRecordset1->GetCollect("路段号").bstrVal; pView->m_mainmap.GetLayers().Item("铁路网").GetSelection().Add(pView->m_mainmap.GetLayers().Item("铁路网").GetFind().Search(strRout)); } else { strRout=m_pRecordset2->GetCollect("路段号").bstrVal; pView->m_mainmap.GetLayers().Item("铁路网").GetSelection().Add(pView->m_mainmap.GetLayers().Item("铁路网").GetFind().Search(strRout)); } m_pRecordset2->Close(); m_pRecordset1->Close(); m_pRecordset02->Close(); m_pRecordset01->Close(); m_pRecordset->MoveNext(); CInfoWnd *pInfoView=(CInfoWnd* )pFram->m_SplitterV.GetPane(0,0); pInfoView->m_RoutStart=m_DataPoint1; pInfoView->m_RoutEnd=m_DataPoint2; pInfoView->UpdateData(FALSE); } else { if(TimerID==0) return; else KillTimer(TimerID); m_pRecordset->Close(); m_pConnection->Close(); } CDialog::OnTimer(nIDEvent); } void CDialogDisplay::OnButtonCancel() { // TODO: Add your control notification handler code here CMainFrame* pFram=(CMainFrame*)AfxGetApp()->m_pMainWnd; CInfoWnd *pInfoView=(CInfoWnd* )pFram->m_SplitterV.GetPane(0,0); CEagleViewView *pView=(CEagleViewView* )pFram->m_SplitterH.GetPane(0,0); pView->m_mainmap.GetLayers().Item("铁路网").GetSelection().ClearSelection(); pView->m_mainmap.GetLayers().Item("省会").GetSelection().ClearSelection(); pView->m_mainmap.GetLayers().Item("一般城市").GetSelection().ClearSelection(); pInfoView->m_TrianNum=""; pInfoView->m_PointStart=""; pInfoView->m_RoutStart=""; pInfoView->m_RoutEnd=""; pInfoView->UpdateData(FALSE); CDialog::OnCancel(); }