📄 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();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -