📄 eagleviewview.cpp
字号:
{
CMapXPoint pt1=pts.Item(i);
CMapXPoint pt2=pts.Item(i+1);
double d=m_mainmap.Distance (pt1.GetX(),pt1.GetY(),pt2.GetX (),pt2.GetY ());
dDistanceTot+=d;
}
CString str;
str.Format ("总距离为:%f公里",dDistanceTot);
((CMainFrame*)AfxGetMainWnd())->m_wndStatusBar.SetPaneText(0,str);
}
catch (COleDispatchException *e){
e->ReportError ();
e->Delete ();
}
catch (COleException *e){
e->ReportError ();
e->Delete ();
}
}
}
}
void CEagleViewView::OnDataMaincity()
{
// TODO: Add your command handler code here
CDialogMain dlgm;
dlgm.DoModal();
}
void CEagleViewView::OnDataNormalcity()
{
// TODO: Add your command handler code here
CDialogNormalCity dlgn;
dlgn.DoModal();
}
void CEagleViewView::OnDataRout()
{
// TODO: Add your command handler code here
CDialogRout dlgr;
dlgr.DoModal();
}
void CEagleViewView::OnDemo()
{
// TODO: Add your command handler code here
m_Demo.DoModal();
}
void CEagleViewView::OnStart()
{
// TODO: Add your command handler code here
TimerID=SetTimer(2,2000,NULL);
CMainFrame* pfram=(CMainFrame*)AfxGetApp()->m_pMainWnd;
pfram->m_Enabled=FALSE;
CString strNum;
strNum.Format("%d",TNum);
_RecordsetPtr m_pRecord0;
_ConnectionPtr m_pConnect0;
m_pRecord0.CreateInstance("ADODB.Recordset");
HRESULT hr;
try
{
hr = m_pConnect0.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
hr = m_pConnect0->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);
}
_bstr_t strSQL1="select * from 短信";
_bstr_t strSQL2="create table 轨迹"+strNum+"(路段号 int NOT NULL PRIMARY KEY,起点 nvarchar(255) NOT NULL,终点 nvarchar(255) NOT NULL)";
_bstr_t strSQL3="insert 轨迹 values('"+strNum+"')";
m_pRecord0->Open(strSQL1,_variant_t((IDispatch *)m_pConnect0,true),adOpenStatic,adLockOptimistic,adCmdText);
m_pConnect0->Execute(strSQL2,NULL,adCmdText);
m_pConnect0->Execute(strSQL3,NULL,adCmdText);
RecordCount=m_pRecord0->GetRecordCount();
m_pRecord0->Close();
m_pConnect0->Close();
}
void CEagleViewView::OnStop()
{
// TODO: Add your command handler code here
CMainFrame* pfram=(CMainFrame*)AfxGetApp()->m_pMainWnd;
pfram->m_Enabled=TRUE;
if(TimerID==0)
return;
else
KillTimer(TimerID);
m_T=FALSE;
TNum++;
CMainFrame *pFram=(CMainFrame *)AfxGetApp()->m_pMainWnd;//获取框架类指针
CInfoWnd *pInfoView=(CInfoWnd* )pFram->m_SplitterV.GetPane(0,0);
CMapXLayer layerR=this->m_mainmap.GetLayers().Item("铁路网");
CMapXLayer layerM=this->m_mainmap.GetLayers().Item("省会");
CMapXLayer layerN=this->m_mainmap.GetLayers().Item("一般城市");
layerR.GetSelection().ClearSelection();
layerM.GetSelection().ClearSelection();
layerN.GetSelection().ClearSelection();
pInfoView->m_TrianNum="";
pInfoView->m_PointStart="";
pInfoView->m_RoutStart="";
pInfoView->m_RoutEnd="";
pInfoView->UpdateData(FALSE);
}
void CEagleViewView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
m_DataPoint1="";
m_DataPoint2="";
CMainFrame *pFram=(CMainFrame *)AfxGetApp()->m_pMainWnd;//获取框架类指针
CInfoWnd *pInfoView=(CInfoWnd* )pFram->m_SplitterV.GetPane(0,0);
CMapXLayer layerR=this->m_mainmap.GetLayers().Item("铁路网");
CMapXLayer layerM=this->m_mainmap.GetLayers().Item("省会");
CMapXLayer layerN=this->m_mainmap.GetLayers().Item("一般城市");
_RecordsetPtr m_pRecord0;
_ConnectionPtr m_pConnect0;
m_pRecord0.CreateInstance("ADODB.Recordset");
HRESULT hr;
try
{
hr = m_pConnect0.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
hr = m_pConnect0->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 短信";
m_pRecord0->Open(strSQL,_variant_t((IDispatch *)m_pConnect0,true),adOpenStatic,adLockOptimistic,adCmdText);
if(m_pRecord0->GetRecordCount()==RecordCount)
return;
RecordCount=m_pRecord0->GetRecordCount();
m_pRecord0->MoveLast();
Context=m_pRecord0->GetCollect("短信内容").bstrVal;
m_pRecord0->Close();
//处理函数//
if(!m_T)//列车信息
{
m_T=TRUE;
int m;
for(m=0;m<Context.GetLength();m++)
{
if(Context.GetAt(m)==',')
{
m++;
break;
}
m_DataPoint1+=Context.GetAt(m);
}
for(;m<Context.GetLength();m++)
m_DataPoint2+=Context.GetAt(m);
_ConnectionPtr m_pConnection;//连接
_RecordsetPtr m_pRecordset;//结果记录集
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 strSQL0="select 城市号 from CityNum where 城市名 = '"+m_DataPoint2+"'";
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open(strSQL0,_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if(m_pRecordset->GetRecordCount()==0)
{
MessageBox("没有这样的省会或一般城市!");
return;
}
int i=m_pRecordset->GetCollect("城市号").intVal;
m_pRecordset->Close();
m_pConnection->Close();
if(i>=300)
{
CString strNum;
strNum.Format("%d",i-300);
CMapXLayer layer=this->m_mainmap.GetLayers().Item("省会");
if(layer.GetFind().Search(strNum).GetCenterX()==0&&layer.GetFind().Search(strNum).GetCenterY()==0)
{
MessageBox("不存在这样的省会!");
return;
}
else
{
this->m_mainmap.ZoomTo(1000,layer.GetFind().Search(strNum).GetCenterX(),layer.GetFind().Search(strNum).GetCenterY());
layer.GetSelection().Add(layer.GetFind().Search(strNum));
}
}
else//一般城市
{
CString strNum;
strNum.Format("%d",i);
CMapXLayer layer=this->m_mainmap.GetLayers().Item("一般城市");
if(layer.GetFind().Search(strNum).GetCenterX()==0&&layer.GetFind().Search(strNum).GetCenterY()==0)
{
MessageBox("不存在这样的一般城市!");
return;
}
else
{
this->m_mainmap.ZoomTo(1000,layer.GetFind().Search(strNum).GetCenterX(),layer.GetFind().Search(strNum).GetCenterY());
layer.GetSelection().Add(layer.GetFind().Search(strNum));
}
}
m_DataPoint=m_DataPoint2;
pInfoView->m_TrianNum=m_DataPoint1;
pInfoView->m_PointStart=m_DataPoint2;
}
else//路段信息
{
int m;
for(m=0;m<Context.GetLength();m++)
{
if(Context.GetAt(m)==',')
{
m++;
break;
}
m_DataPoint1+=Context.GetAt(m);
}
for(;m<Context.GetLength();m++)
m_DataPoint2+=Context.GetAt(m);
if(m_DataPoint1!=m_DataPoint)
{
MessageBox("站点不可达!");
return;
}
else
{
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset1;
m_pRecordset1.CreateInstance("ADODB.Recordset");
_RecordsetPtr m_pRecordset2;
m_pRecordset2.CreateInstance("ADODB.Recordset");
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance("ADODB.Recordset");
_RecordsetPtr m_pRecordset01;
m_pRecordset01.CreateInstance("ADODB.Recordset");
_RecordsetPtr m_pRecordset02;
m_pRecordset02.CreateInstance("ADODB.Recordset");
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 strSQL1="SELECT 路段号 FROM RoutInfo where 路段起点='"+m_DataPoint1+"'and 路段终点 ='"+m_DataPoint2+"'";
_variant_t strSQL2="SELECT 路段号 FROM RoutInfo where 路段起点='"+m_DataPoint2+"'and 路段终点 ='"+m_DataPoint1+"'";
m_pRecordset1->Open(strSQL1,_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
m_pRecordset2->Open(strSQL2,_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if(m_pRecordset1->GetRecordCount()==0&&m_pRecordset2->GetRecordCount()==0)
{
MessageBox("站点不可达!");
return;
}
m_DataPoint=m_DataPoint2;
_variant_t strT0="select 城市号 from CityNum where 城市名 = '"+m_DataPoint2+"'";
m_pRecordset->Open(strT0,_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
int i=m_pRecordset->GetCollect("城市号").intVal;
_variant_t strT01="select 城市号 from CityNum where 城市名 = '"+m_DataPoint1+"'";
_variant_t strT02="select 城市号 from CityNum where 城市名 = '"+m_DataPoint2+"'";
m_pRecordset01->Open(strT01,_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
m_pRecordset02->Open(strT02,_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);
this->m_mainmap.ZoomTo(1000,layerM.GetFind().Search(strNum1).GetCenterX(),layerM.GetFind().Search(strNum1).GetCenterY());
layerM.GetSelection().Add(layerM.GetFind().Search(strNum1));
layerM.GetSelection().Add(layerM.GetFind().Search(strNum2));
}
else
{
CString strNum1,strNum2;
strNum1.Format("%d",Num1-300);
strNum2.Format("%d",Num2);
this->m_mainmap.ZoomTo(1000,layerM.GetFind().Search(strNum1).GetCenterX(),layerM.GetFind().Search(strNum1).GetCenterY());
layerM.GetSelection().Add(layerM.GetFind().Search(strNum1));
layerN.GetSelection().Add(layerN.GetFind().Search(strNum2));
}
}
else
{
if(Num2>=300)
{
CString strNum1,strNum2;
strNum1.Format("%d",Num1);
strNum2.Format("%d",Num2-300);
this->m_mainmap.ZoomTo(1000,layerN.GetFind().Search(strNum1).GetCenterX(),layerN.GetFind().Search(strNum1).GetCenterY());
layerN.GetSelection().Add(layerN.GetFind().Search(strNum1));
layerM.GetSelection().Add(layerM.GetFind().Search(strNum2));
}
else
{
CString strNum1,strNum2;
strNum1.Format("%d",Num1);
strNum2.Format("%d",Num2);
this->m_mainmap.ZoomTo(1000,layerN.GetFind().Search(strNum1).GetCenterX(),layerN.GetFind().Search(strNum1).GetCenterY());
layerN.GetSelection().Add(layerN.GetFind().Search(strNum1));
layerN.GetSelection().Add(layerN.GetFind().Search(strNum2));
}
}
//选中路段
CString strRout;
if(m_pRecordset1->GetRecordCount()!=0)
{
strRout=m_pRecordset1->GetCollect("路段号").bstrVal;
layerR.GetSelection().Add(layerR.GetFind().Search(strRout));
}
else
{
strRout=m_pRecordset2->GetCollect("路段号").bstrVal;
layerR.GetSelection().Add(layerR.GetFind().Search(strRout));
}
CString strNum;
strNum.Format("%d",TNum);
CString strNum1;
strNum1.Format("%d",m_Num++);
_bstr_t strSQL="insert 轨迹"+strNum+" values ("+strNum1+",'"+m_DataPoint1+"','"+m_DataPoint2+"')";
m_pConnection->Execute(strSQL,NULL,adCmdText);
m_pRecordset02->Close();
m_pRecordset01->Close();
m_pRecordset->Close();
m_pRecordset2->Close();
m_pRecordset1->Close();
m_pConnection->Close();
}
pInfoView->m_RoutStart=m_DataPoint1;
pInfoView->m_RoutEnd=m_DataPoint2;
}
pInfoView->UpdateData(FALSE);
CView::OnTimer(nIDEvent);
}
void CEagleViewView::OnDisplay()
{
// TODO: Add your command handler code here
CDialogDisplay disp;
disp.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -