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::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); }
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(); }
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; }
///////////////////////////////////////////////////////// // Demonstrate: // IADsPropertyList::GetPropertyItem // IADsPropertyEntry // void CDlgIADsPropertyList::OnGet() { HRESULT hr; CString s; BSTR bstr; VARIANT var; IDispatch *pDispatch; IADsPropertyEntry *pEntry; IADsPropertyValue *pValue; LONG lADsType; UpdateData(TRUE); m_cValueList.ResetContent(); bstr = m_sAttribute.AllocSysString(); hr = m_pPropList->GetPropertyItem( bstr, m_cADsType.GetCurSel()+1, &var ); SysFreeString( bstr ); if ( SUCCEEDED(hr) ) { pDispatch = V_DISPATCH( &var ); hr = pDispatch->QueryInterface( IID_IADsPropertyEntry, (void**) &pEntry ); VariantClear( &var ); // IADsPropertyEntry if ( SUCCEEDED(hr) ) { CPtrList dList; // get_Values return array of VT_DISPATH hr = pEntry->get_Values( &var ); pEntry->get_ADsType( &lADsType); hr = VariantToPtrList( var, dList ); pEntry->Release(); //////////////////////////// // IADsPropertyValue ///////////////////////////// if ( SUCCEEDED(hr) ) { POSITION pos; pos = dList.GetHeadPosition(); while ( pos != NULL ) { pDispatch = (IDispatch*) dList.GetAt(pos); hr = pDispatch->QueryInterface( IID_IADsPropertyValue, (void**) &pValue ); if ( SUCCEEDED(hr) ) { pValue->AddRef(); hr = PropertyValueToString( lADsType, pValue, s ); m_cValueList.AddString( s ); pValue->Release(); } dList.GetNext(pos); } } dList.RemoveAll(); VariantClear(&var); } } }