// ControlPanel.cpp : implementation file // #include "stdafx.h" #include "ControlPanel.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CControlPanel dialog IMPLEMENT_DYNAMIC(CControlPanel, CDialog) CControlPanel::CControlPanel(CWnd* pParent /*=NULL*/) : CDialog(CControlPanel::IDD, pParent) { } BOOL CControlPanel::Create( int bottom, CWnd* parent) { m_offset = bottom; return CDialog::Create( IDD_CONTROL_PANEL, parent); } CControlPanel::~CControlPanel() { } void CControlPanel::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_TRAINS, m_Timetable); } BEGIN_MESSAGE_MAP(CControlPanel, CDialog) END_MESSAGE_MAP() // CControlPanel message handlers BOOL CControlPanel::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_Timetable.InsertColumn(0,_T("Train")); m_Timetable.InsertColumn(1,_T("Passengers")); m_Timetable.InsertColumn(2,_T("Approaching")); m_Timetable.InsertColumn(3,_T("ETA")); m_Timetable.SetColumnWidth(0,100); m_Timetable.SetColumnWidth(1,100); m_Timetable.SetColumnWidth(2,100); m_Timetable.SetColumnWidth(3,100); for(size_t t = 0; t < theNetwork->Trains.size(); t++) { m_Timetable.InsertItem(t,_T("")); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CControlPanel::UpdateTimeTable( int TrainID ) { CTrain* T = NULL; for(size_t t = 0; t < theNetwork->Trains.size(); t++) { T = theNetwork->Trains[t]; if(T->Ident == TrainID ) { CString stp,stn; stn.Format(_T("%d"), T->Number); stp.Format(_T("%d"), T->Passengers); m_Timetable.SetItemText( T->Number - 1, 0, stn); m_Timetable.SetItemText( T->Number - 1, 1, stp); if(T->AtStation()) m_Timetable.SetItemText(T->Number - 1, 2, T->Departing->Name); else m_Timetable.SetItemText(T->Number - 1, 2, T->Arriving->Name); } } m_Timetable.Invalidate(); } void CControlPanel::Resize() { if(IsWindow(m_hWnd)) { if(GetParent()) { CRect me; GetWindowRect(me); CRect rc; GetParent()->GetClientRect(rc); int x = 0; int y = rc.bottom - m_offset - me.Height(); int w = rc.Width(); int h = me.Height(); SetWindowPos(NULL,x,y,w,h,SWP_NOOWNERZORDER); //me.DeflateRect(2,2); m_Timetable.SetWindowPos(NULL,0,0,me.Width(),me.Height(),SWP_NOOWNERZORDER); } } }