NeobusDlg.cpp
上传用户:yokoluohf
上传日期:2013-02-25
资源大小:769k
文件大小:4k
源码类别:

GIS编程

开发平台:

Visual C++

  1. // NeobusDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "Neobus.h"
  5. #include "NeobusDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #endif
  9. // CAboutDlg dialog used for App About
  10. class CAboutDlg : public CDialog
  11. {
  12. public:
  13. CAboutDlg();
  14. // Dialog Data
  15. enum { IDD = IDD_ABOUTBOX };
  16. protected:
  17. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  18. // Implementation
  19. protected:
  20. DECLARE_MESSAGE_MAP()
  21. };
  22. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  23. {
  24. }
  25. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialog::DoDataExchange(pDX);
  28. }
  29. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  30. END_MESSAGE_MAP()
  31. // CNeobusDlg dialog
  32. CNeobusDlg::CNeobusDlg(CWnd* pParent /*=NULL*/)
  33. : CDialog(CNeobusDlg::IDD, pParent)
  34. , m_outputPaths(_T(""))
  35. {
  36. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  37. }
  38. void CNeobusDlg::DoDataExchange(CDataExchange* pDX)
  39. {
  40. CDialog::DoDataExchange(pDX);
  41. DDX_Control(pDX, IDC_COMBO_START_STATION, m_startStation);
  42. DDX_Control(pDX, IDC_COMBO_END_STATION, m_endStation);
  43. DDX_Text(pDX, IDC_EDIT_OUTPUT_PATHS, m_outputPaths);
  44. }
  45. BEGIN_MESSAGE_MAP(CNeobusDlg, CDialog)
  46. ON_WM_SYSCOMMAND()
  47. ON_WM_PAINT()
  48. ON_WM_QUERYDRAGICON()
  49. //}}AFX_MSG_MAP
  50. ON_BN_CLICKED(IDC_BUTTON_FIND_PATHS, OnBnClickedButtonFindPaths)
  51. END_MESSAGE_MAP()
  52. // CNeobusDlg message handlers
  53. BOOL CNeobusDlg::OnInitDialog()
  54. {
  55. CDialog::OnInitDialog();
  56. // Add "About..." menu item to system menu.
  57. // IDM_ABOUTBOX must be in the system command range.
  58. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  59. ASSERT(IDM_ABOUTBOX < 0xF000);
  60. CMenu* pSysMenu = GetSystemMenu(FALSE);
  61. if (pSysMenu != NULL)
  62. {
  63. CString strAboutMenu;
  64. strAboutMenu.LoadString(IDS_ABOUTBOX);
  65. if (!strAboutMenu.IsEmpty())
  66. {
  67. pSysMenu->AppendMenu(MF_SEPARATOR);
  68. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  69. }
  70. }
  71. // Set the icon for this dialog.  The framework does this automatically
  72. //  when the application's main window is not a dialog
  73. SetIcon(m_hIcon, TRUE); // Set big icon
  74. SetIcon(m_hIcon, FALSE); // Set small icon
  75. // TODO: Add extra initialization here
  76. //<<****//装载数据
  77. markup.Load (_T("Data\out.xml")); 
  78. if (markup.FindElem("lines"))
  79. {
  80. m_neobus.FromXML (markup);
  81. }
  82. for (XStations::iterator pos = m_neobus.lines.allStations.begin(); pos != m_neobus.lines.allStations.end(); ++pos)
  83. {
  84. if (pos->first == "") continue;
  85. m_startStation.AddString(pos->first);
  86. m_endStation.AddString(pos->first);
  87. }
  88. //>>****
  89. return TRUE;  // return TRUE  unless you set the focus to a control
  90. }
  91. void CNeobusDlg::OnSysCommand(UINT nID, LPARAM lParam)
  92. {
  93. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  94. {
  95. CAboutDlg dlgAbout;
  96. dlgAbout.DoModal();
  97. }
  98. else
  99. {
  100. CDialog::OnSysCommand(nID, lParam);
  101. }
  102. }
  103. // If you add a minimize button to your dialog, you will need the code below
  104. //  to draw the icon.  For MFC applications using the document/view model,
  105. //  this is automatically done for you by the framework.
  106. void CNeobusDlg::OnPaint() 
  107. {
  108. if (IsIconic())
  109. {
  110. CPaintDC dc(this); // device context for painting
  111. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  112. // Center icon in client rectangle
  113. int cxIcon = GetSystemMetrics(SM_CXICON);
  114. int cyIcon = GetSystemMetrics(SM_CYICON);
  115. CRect rect;
  116. GetClientRect(&rect);
  117. int x = (rect.Width() - cxIcon + 1) / 2;
  118. int y = (rect.Height() - cyIcon + 1) / 2;
  119. // Draw the icon
  120. dc.DrawIcon(x, y, m_hIcon);
  121. }
  122. else
  123. {
  124. CDialog::OnPaint();
  125. }
  126. }
  127. // The system calls this function to obtain the cursor to display while the user drags
  128. //  the minimized window.
  129. HCURSOR CNeobusDlg::OnQueryDragIcon()
  130. {
  131. return static_cast<HCURSOR>(m_hIcon);
  132. }
  133. void CNeobusDlg::OnBnClickedButtonFindPaths()
  134. {
  135. CString startStr = "";
  136. CString endStr = "";
  137. UpdateData (TRUE);
  138. m_startStation.GetWindowText(startStr);
  139. m_endStation.GetWindowText(endStr);
  140. m_outputPaths = m_neobus.FindPaths(startStr, endStr, 0);
  141. UpdateData(FALSE);
  142. }