LRESULT CServiceRequirementDlg::OnMsgComboChange(WPARAM wParam, LPARAM lParam) { int nComboxSel = (int)wParam; if (nComboxSel == LB_ERR) return 0; if (NULL == m_pServicingRequirement) { return 0; } LV_DISPINFO* pDispInfo = (LV_DISPINFO*)lParam; LV_ITEM* plvItem = &pDispInfo->item; int nItem = plvItem->iItem; int nSubItem = plvItem->iSubItem; if (nItem < 0) return 0; switch(nSubItem) { case 2: { ProbabilityDistribution* pProbDist = NULL; CProbDistManager* pProbDistMan = m_pInputAirside->m_pAirportDB->getProbDistMan(); //if select the first item if( nComboxSel == 0 ) { CProbDistEntry* pPDEntry = NULL; pPDEntry = (*m_pSelectProbDistEntry)(NULL, m_pInputAirside); if(pPDEntry == NULL) return 0; pProbDist = pPDEntry->m_pProbDist; assert( pProbDist ); CString strDistName = pPDEntry->m_csName; //if(strDistName == m_strDistName) // return; //m_strDistName = strDistName; char szBuffer[1024] = {0}; pProbDist->screenPrint(szBuffer); m_pServicingRequirement->SetDistScreenPrint(szBuffer); m_pServicingRequirement->SetProbTypes((ProbTypes)pProbDist->getProbabilityType()); pProbDist->printDistribution(szBuffer); m_pServicingRequirement->SetPrintDist(szBuffer); //m_strDistScreenPrint = szBuffer; //---------------- //int nIndex = 0; //if ((nIndex=m_ComBoDistribution.FindString(nIndex, m_strDistName)) != CB_ERR) // m_ComBoDistribution.SetCurSel( nIndex ); //else //{ // nIndex = m_ComBoDistribution.AddString(m_strDistName); // m_ComBoDistribution.SetCurSel(nIndex); //} InitServiceTimeList(); m_ListFltTypeServiceRequirement.SetItemText(plvItem->iItem, plvItem->iSubItem, strDistName); m_pServicingRequirement->SetServiceTime(strDistName); } else { map<int, CString>::const_iterator iter = m_ServiceTimeMap.find(nComboxSel); CString strServiceTime = iter->second; m_pServicingRequirement->SetServiceTime(strServiceTime); CProbDistEntry* pPDEntry = NULL; int nCount = pProbDistMan->getCount(); for( int i=0; i<nCount; i++ ) { pPDEntry = pProbDistMan->getItem( i ); if( strcmp( pPDEntry->m_csName, strServiceTime ) == 0 ) break; } //assert( i < nCount ); pProbDist = pPDEntry->m_pProbDist; assert( pProbDist ); char szBuffer[1024] = {0}; pProbDist->screenPrint(szBuffer); m_pServicingRequirement->SetDistScreenPrint(szBuffer); m_pServicingRequirement->SetProbTypes((ProbTypes)pProbDist->getProbabilityType()); pProbDist->printDistribution(szBuffer); m_pServicingRequirement->SetPrintDist(szBuffer); } } break; case 3: { ProbabilityDistribution* pProbDist = NULL; CProbDistManager* pProbDistMan = m_pInputAirside->m_pAirportDB->getProbDistMan(); //if select the first item if( nComboxSel == 0 ) { CProbDistEntry* pPDEntry = NULL; pPDEntry = (*m_pSelectProbDistEntry)(NULL, m_pInputAirside); if(pPDEntry == NULL) return 0; pProbDist = pPDEntry->m_pProbDist; assert( pProbDist ); CString strDistName = pPDEntry->m_csName; //if(strDistName == m_strDistName) // return; //m_strDistName = strDistName; char szBuffer[1024] = {0}; pProbDist->screenPrint(szBuffer); m_pServicingRequirement->SetSubDistScreenPrint(szBuffer); m_pServicingRequirement->SetSubProbTypes((ProbTypes)pProbDist->getProbabilityType()); pProbDist->printDistribution(szBuffer); m_pServicingRequirement->SetSubPrintDist(szBuffer); //m_strDistScreenPrint = szBuffer; //---------------- //int nIndex = 0; //if ((nIndex=m_ComBoDistribution.FindString(nIndex, m_strDistName)) != CB_ERR) // m_ComBoDistribution.SetCurSel( nIndex ); //else //{ // nIndex = m_ComBoDistribution.AddString(m_strDistName); // m_ComBoDistribution.SetCurSel(nIndex); //} InitServiceTimeList(); m_ListFltTypeServiceRequirement.SetItemText(plvItem->iItem, plvItem->iSubItem, strDistName); m_pServicingRequirement->SetSubServiceTime(strDistName); } else { map<int, CString>::const_iterator iter = m_ServiceTimeMap.find(nComboxSel); CString strServiceTime = iter->second; m_pServicingRequirement->SetSubServiceTime(strServiceTime); CProbDistEntry* pPDEntry = NULL; int nCount = pProbDistMan->getCount(); for( int i=0; i<nCount; i++ ) { pPDEntry = pProbDistMan->getItem( i ); if( strcmp( pPDEntry->m_csName, strServiceTime ) == 0 ) break; } //assert( i < nCount ); pProbDist = pPDEntry->m_pProbDist; assert( pProbDist ); char szBuffer[1024] = {0}; pProbDist->screenPrint(szBuffer); m_pServicingRequirement->SetSubDistScreenPrint(szBuffer); m_pServicingRequirement->SetSubProbTypes((ProbTypes)pProbDist->getProbabilityType()); pProbDist->printDistribution(szBuffer); m_pServicingRequirement->SetSubPrintDist(szBuffer); } } break; //condition case 4: { enumVehicleTypeCondition nConditionType = enumVehicleTypeCondition_Per100Liters; if (nComboxSel >= enumVehicleTypeCondition_Per100Liters && nComboxSel < enumVehicleTypeCondition_Count) { nConditionType = (enumVehicleTypeCondition)nComboxSel; } m_pServicingRequirement->SetConditionType(nConditionType); } break; default: break; } //InitListCtrl(); SetListContent(false); GetDlgItem(IDC_BUTTON_SAVE)->EnableWindow(TRUE); return 0; }
void CDlgDepartureSlotSpec::OnSelComboBox(NMHDR* pNMHDR, LRESULT* pResult) { LV_DISPINFO* dispinfo = (LV_DISPINFO * )pNMHDR; if(m_nColumnSel == 1) return; *pResult = 0; if(!dispinfo) return; if(!m_pDepSlotSpec)return; DepartureSlotItem* pItem = m_pDepSlotSpec->GetItem(m_nRowSel); if(!pItem)return; // TODO: Add your control notification handler code here CString strSel; strSel = dispinfo->item.pszText; char szBuffer[1024] = {0}; ProbabilityDistribution* pProbDist = NULL; CProbDistManager* pProbDistMan = m_pInputAirside->m_pAirportDB->getProbDistMan(); if(strSel == _T("New Probability Distribution..." ) ) { CProbDistEntry* pPDEntry = NULL; pPDEntry = (*m_pSelectProbDistEntry)(NULL, m_pInputAirside); if(pPDEntry == NULL) { if(m_nColumnSel == 3) m_wndListCtrl.SetItemText(m_nRowSel,m_nColumnSel,pItem->GetFirstSlotDelayProDisName()); else if(m_nColumnSel == 4) m_wndListCtrl.SetItemText(m_nRowSel,m_nColumnSel,pItem->GetInterSlotDelayProDisName()); return; } pProbDist = pPDEntry->m_pProbDist; assert( pProbDist ); CString strDistName = pPDEntry->m_csName; pProbDist->printDistribution(szBuffer); if(m_nColumnSel == 3)//First Slot Delay { pItem->SetFirstSlotDelayProDisName(strDistName); pItem->SetFirstSlotDelayProDisType((ProbTypes)pProbDist->getProbabilityType()); pItem->SetFirstSlotDelayPrintDis(szBuffer); m_wndListCtrl.SetItemText(m_nRowSel,m_nColumnSel,strDistName); } else if(m_nColumnSel == 4)//Inter Slot Delay { pItem->SetInterSlotDelayProDisName(strDistName); pItem->SetInterSlotDelayProDisType((ProbTypes)pProbDist->getProbabilityType()); pItem->SetInterSlotDelayPrintDis(szBuffer); m_wndListCtrl.SetItemText(m_nRowSel,m_nColumnSel,strDistName); } } else { //if(m_strDistName == strSel) // return; CProbDistEntry* pPDEntry = NULL; int nCount = pProbDistMan->getCount(); for( int i=0; i<nCount; i++ ) { pPDEntry = pProbDistMan->getItem( i ); if(pPDEntry->m_csName == strSel) break; } //assert( i < nCount ); pProbDist = pPDEntry->m_pProbDist; assert( pProbDist ); CString strDistName = pPDEntry->m_csName; pProbDist->printDistribution(szBuffer); if(m_nColumnSel == 3)//First Slot Delay { pItem->SetFirstSlotDelayProDisName(strDistName); pItem->SetFirstSlotDelayProDisType((ProbTypes)pProbDist->getProbabilityType()); pItem->SetFirstSlotDelayPrintDis(szBuffer); m_wndListCtrl.SetItemText(m_nRowSel,m_nColumnSel,strDistName); } else if(m_nColumnSel == 4)//Inter Slot Delay { pItem->SetInterSlotDelayProDisName(strDistName); pItem->SetInterSlotDelayProDisType((ProbTypes)pProbDist->getProbabilityType()); pItem->SetInterSlotDelayPrintDis(szBuffer); m_wndListCtrl.SetItemText(m_nRowSel,m_nColumnSel,strDistName); } } }