void CDlgFreeTrainList::UpdateList() { for(int no=0;no<m_ctlList.GetItemCount();no++) g_SetCheck[no] = m_ctlList.GetCheck(no); while(m_ctlList.GetItemCount()<g_FreeTrainManageList.GetCount()) { ::AddListItem(m_ctlList,0,0,""); } while(m_ctlList.GetItemCount()>g_FreeTrainManageList.GetCount()) { m_ctlList.DeleteItem(0); } for(int item=0;item<g_FreeTrainManageList.GetCount();item++) { POSITION pos = g_FreeTrainManageList.FindIndex(item); struct TagFreeTrainStruct *pFreeTrain = (TagFreeTrainStruct *)g_FreeTrainManageList.GetAt(pos); ::SetItemText(m_ctlList,item,0,::GetFormatText("%d",item+1)); ::SetItemText(m_ctlList,item,1,g_Unit[pFreeTrain->InFeederUnitID].UnitName); ::SetItemText(m_ctlList,item,2,g_Unit[pFreeTrain->OutFeederUnitID].UnitName); ::SetItemText(m_ctlList,item,3,::GetFormatText("%0.0f",pFreeTrain->AverCurrent)); ::SetItemText(m_ctlList,item,4,::GetFormatText("%0.0f",pFreeTrain->AverAngle)); ::SetItemText(m_ctlList,item,5,::GetFormatText("%d",pFreeTrain->InContinuedSeconds)); ::SetItemText(m_ctlList,item,6,::GetFormatText("%d",pFreeTrain->ChangeContinuedSeconds)); ::SetItemText(m_ctlList,item,7,::GetFormatText("%d",pFreeTrain->OutContinuedSeconds)); ::SetItemText(m_ctlList,item,8,::GetFormatText("%0.1f",pFreeTrain->CurrentChangeRate*100)); ::SetItemText(m_ctlList,item,9,::GetFormatText("%d",pFreeTrain->StartupDelaySecond)); ::SetItemImage(m_ctlList,item,0); m_ctlList.SetCheck(item,g_SetCheck[item]); } }
void CDlgFreeTrainList::OnStartup() { if(::CheckOperateCondition()==FALSE) return; if(::AfxMessageBox("是否启动除自由行车?",MB_YESNO)==IDNO) return; for(int item=0;item<m_ctlList.GetItemCount();item++) { if(m_ctlList.GetCheck(item)) { POSITION pos = g_FreeTrainManageList.FindIndex(item); struct TagFreeTrainStruct *pFreeTrain = (TagFreeTrainStruct *)g_FreeTrainManageList.GetAt(pos); pFreeTrain->InBeginTime = CTime::GetCurrentTime() + CTimeSpan(0,0,0,pFreeTrain->StartupDelaySecond);; pFreeTrain->InFinishTime = pFreeTrain->InBeginTime+CTimeSpan(0,0,0,pFreeTrain->InContinuedSeconds); pFreeTrain->ChangeBeginTime = pFreeTrain->InFinishTime; pFreeTrain->ChangeFinishTime = pFreeTrain->ChangeBeginTime+CTimeSpan(0,0,0,pFreeTrain->ChangeContinuedSeconds); pFreeTrain->OutBeginTime = pFreeTrain->ChangeFinishTime; pFreeTrain->OutFinishTime = pFreeTrain->OutBeginTime+CTimeSpan(0,0,0,pFreeTrain->OutContinuedSeconds); struct TagFreeTrainStruct *pNewFreeTrain = new TagFreeTrainStruct; memcpy(pNewFreeTrain,pFreeTrain,sizeof(TagFreeTrainStruct)); ::AddFreeTrain(pNewFreeTrain); g_pDlgMessageBox->DoShow("准备启动自由行车",3); } } OnCancel(); }
// 根据回调指针获取wke对象指针 CDuiWkeView* CDuiWkeView::GetWkeViewByClientHandler(const wkeClientHandler* pWkeClientHandler) { int count = g_duiWkeViews.GetCount(); for(int i = 0; i < count; i ++) { POSITION pos = g_duiWkeViews.FindIndex(i); CDuiWkeView* pDuiWkeView = (CDuiWkeView*)g_duiWkeViews.GetAt(pos); if(pWkeClientHandler == pDuiWkeView->GetWkeClientHandler()) { return pDuiWkeView; } } return NULL; }
void CDlgFreeTrainList::OnEdit() { if(m_ctlList.GetSelectedCount()!=1) return; POSITION pos = m_ctlList.GetFirstSelectedItemPosition(); int item = m_ctlList.GetNextSelectedItem(pos); TagFreeTrainStruct *pFreeTrain = (TagFreeTrainStruct *)g_FreeTrainManageList.GetAt(g_FreeTrainManageList.FindIndex(item)); CDlgFreeTrain dlg; dlg.m_pFreeTrain = pFreeTrain; if(dlg.DoModal()==IDOK) UpdateList(); }
void CDlgFreeTrainList::OnSave() { if(::AfxMessageBox("是否保存除自由行车管理文件?",MB_YESNO)==IDNO) return; CString FileName = g_ProjectFilePath + "FeedTrain.lst"; CFile file; if(!file.Open(FileName, CFile::modeCreate | CFile::modeWrite)) { AfxMessageBox(FileName+" 保存文件失败!",MB_SYSTEMMODAL); return; } char buffer[1024]; CArchive ar(&file,CArchive::store,1024,buffer); CString title = "FreeTrainList 1.0"; ar<<title; WORD Count = g_FreeTrainManageList.GetCount(); ar<<Count; for(int no=0;no<Count;no++) { POSITION pos = g_FreeTrainManageList.FindIndex(no); struct TagFreeTrainStruct *pFreeTrain = (TagFreeTrainStruct *)g_FreeTrainManageList.GetAt(pos); ar<<pFreeTrain->InFeederUnitID; ar<<pFreeTrain->OutFeederUnitID; ar<<pFreeTrain->AverCurrent; ar<<pFreeTrain->AverAngle; ar<<pFreeTrain->CurrentChangeRate; ar<<pFreeTrain->InContinuedSeconds; ar<<pFreeTrain->ChangeContinuedSeconds; ar<<pFreeTrain->OutContinuedSeconds; ar<<pFreeTrain->StartupDelaySecond; CString InCurrentChangeRateList = pFreeTrain->InCurrentChangeRateList; CString OutCurrentChangeRateList = pFreeTrain->OutCurrentChangeRateList; ar<<InCurrentChangeRateList; ar<<OutCurrentChangeRateList; g_SetCheck[no] = m_ctlList.GetCheck(no); ar<<g_SetCheck[no]; } ar.Flush(); ar.Close(); file.Close(); }
void CDlgFreeTrainList::OnDel() { if(m_ctlList.GetSelectedCount()!=1) return; if(::AfxMessageBox("是否删除自由行车?",MB_YESNO)==IDNO) return; POSITION pos = m_ctlList.GetFirstSelectedItemPosition(); int item = m_ctlList.GetNextSelectedItem(pos); g_FreeTrainManageList.RemoveAt(g_FreeTrainManageList.FindIndex(item)); g_LastSelected = m_ctlList.GetNextSelectedItem(pos); g_LastSelected++; UpdateList(); ::SelectListItem(m_ctlList,g_LastSelected); }
CDuiWkeView::~CDuiWkeView() { if(m_hwndHost != NULL) { ::DestroyWindow(m_hwndHost); } // 删除wke对象列表中的项 int count = g_duiWkeViews.GetCount(); for(int i = 0; i < count; i ++) { POSITION pos = g_duiWkeViews.FindIndex(i); CDuiWkeView* pDuiWkeView = (CDuiWkeView*)g_duiWkeViews.GetAt(pos); if(pDuiWkeView == this) { g_duiWkeViews.RemoveAt(pos); return; } } }
bool CORDBList::ReadDBInfo() { CDBInfo *db; CStdioFile listfile, infofile; CFileStatus fstatus; CFileException e; CPtrList plist; char data[1025]; char *tmp; if (infofile.Open(m_ordbinfo, CFile::modeRead)) { while (1) { memset(data, 0x00, 1024); TRY { if (infofile.ReadString(data, 1024) == NULL) break; data[strlen(data)-1] = NULL; db = new CDBInfo(); tmp = strtok(data, " "); // db name if (tmp) { db->m_dbname.Format("%s", tmp); } tmp = strtok(NULL, " "); // permanent if (tmp) { if (!strcmp(tmp, "1")) db->m_permanent = true; else db->m_permanent = false; } plist.AddTail(db); } CATCH_ALL(e) { break; } END_CATCH_ALL } infofile.Close(); } if (listfile.Open(m_ordblist, CFile::modeRead)) { listfile.GetStatus(fstatus); m_LastTime = fstatus.m_mtime; } else { return false; } while (1) { memset(data, 0x00, 1024); TRY { if (listfile.ReadString(data, 1024) == NULL) break; data[strlen(data)-1] = NULL; db = new CDBInfo(); tmp = strtok(data, " "); // db name if (tmp) { db->m_dbname.Format("%s", tmp); } tmp = strtok(NULL, " "); // db path if (tmp) { db->m_dbpath.Format("%s", tmp); } tmp = strtok(NULL, " "); // host if (tmp) { db->m_host.Format("%s", tmp); } tmp = strtok(NULL, " "); // log path if (tmp) { db->m_logpath.Format("%s", tmp); } int cnt = (int) plist.GetCount(); if (cnt > 0) { for (int i = 0; i < cnt; i++) { CDBInfo *p = (CDBInfo *)plist.GetAt(plist.FindIndex(i)); if (db->m_dbname == p->m_dbname) { db->m_permanent = p->m_permanent; break; } } } m_List.AddTail(db); } CATCH_ALL(e) { break; } END_CATCH_ALL } listfile.Close(); while (!plist.IsEmpty()) { CDBInfo *p = (CDBInfo *)plist.RemoveHead(); delete p; } return true; }
void CDlgFreeTrainList::OnClon() { if(m_ctlList.GetSelectedCount()!=1) return; POSITION pos = m_ctlList.GetFirstSelectedItemPosition(); int item = m_ctlList.GetNextSelectedItem(pos); struct TagFreeTrainStruct *pFreeTrain = (TagFreeTrainStruct *)g_FreeTrainManageList.GetAt(g_FreeTrainManageList.FindIndex(item)); struct TagFreeTrainStruct *pNewFreeTrain = new TagFreeTrainStruct; memcpy(pNewFreeTrain,pFreeTrain,sizeof(TagFreeTrainStruct)); g_FreeTrainManageList.AddTail(pNewFreeTrain); UpdateList(); ::SelectListLastItem(m_ctlList); }