void CExplorerTestView::InitListHeader() { LV_COLUMN lvColumn; CString strHeader; CListCtrl& listCtrl = GetListCtrl(); lvColumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH; for(int i = 0 ; cListHeader[i] != NULL ; i++) { strHeader = cListHeader[i]; lvColumn.fmt = (strHeader.Compare("크기") == 0 ? LVCFMT_RIGHT : LVCFMT_LEFT); lvColumn.cx = nHeaderWidth[i]; lvColumn.pszText = cListHeader[i]; lvColumn.iSubItem = i; listCtrl.InsertColumn(i, &lvColumn); } CHeaderCtrl* pH = (CHeaderCtrl*)GetListCtrl().GetDlgItem(0); pH->ModifyStyle(0, HDS_HOTTRACK); }
BOOL CPage_Node_Movement::OnInitDialog() { CPropertyPage::OnInitDialog(); int PlanNo = m_pDoc->GetTimingPlanNo("ALLDAY"); for(int p = 1; p <= _max_phase_number; p++) { m_bAvailablePhaseVector [p] = false; m_EffectiveGreenTime [p]= 0; } m_CurrentNodeID = m_pDoc->m_SelectedNodeID ; m_CurrentNodeNumber = m_pDoc->m_NodeNoMap [m_CurrentNodeID]->m_NodeNumber ; m_CycleLengthInSec = m_pDoc->m_NodeNoMap [m_CurrentNodeID]->m_CycleLengthInSecond ; // Give better margin to editors m_ListCtrl.SetCellMargin(1.2); CGridRowTraitXP* pRowTrait = new CGridRowTraitXP; // Hao: this ponter should be delete. m_ListCtrl.SetDefaultRowTrait(pRowTrait); m_Column_names.push_back ("Incoming Node"); //0 m_Column_names.push_back ("Outgoing Node"); //1 m_Column_names.push_back ("Turn Type"); //2 m_Column_names.push_back ("Direction"); //3 m_Column_names.push_back ("Prohibition"); //4 m_Column_names.push_back ("Simu Total Volume"); //5 m_Column_names.push_back ("Simu Hourly Volume"); //6 m_Column_names.push_back ("Simu Delay (sec)"); //7 //if(m_bSigalizedNode == true) //{ //m_Column_names.push_back ("Green Start Time"); //9 //m_Column_names.push_back ("Green End Time"); //10 //} CHeaderCtrl* pHeader = m_ListCtrl.GetHeaderCtrl(); if( pHeader!=NULL) { pHeader->ModifyStyle(HDS_BUTTONS, 0); // disable the sorting. } //Add Columns and set headers for (size_t i=0;i<m_Column_names.size();i++) { CGridColumnTrait* pTrait = NULL; // pTrait = new CGridColumnTraitEdit(); if(m_Column_names[i].find ("Turn Type")!= string::npos) { pTrait = new CGridColumnTraitEdit(); } if(m_Column_names[i].find ("Direction")!= string::npos) { pTrait = new CGridColumnTraitEdit(); } if(m_Column_names[i].find ("Prohibition")!= string::npos) { CGridColumnTraitCombo* pComboTrait = new CGridColumnTraitCombo; pComboTrait->SetStyle (CBS_DROPDOWNLIST); pComboTrait->AddItem(0, _T("")); pComboTrait->AddItem(0, _T("Prohibited")); pTrait = pComboTrait; } m_ListCtrl.InsertColumnTrait((int)i,m_Column_names.at(i).c_str(),LVCFMT_LEFT,-1,-1, pTrait); if(i<=10) m_ListCtrl.SetColumnWidth((int)i,100); else m_ListCtrl.SetColumnWidth((int)i,100); } //Add Rows DTANode* pNode = m_pDoc->m_NodeNoMap [m_CurrentNodeID]; for (unsigned int i=0;i< pNode->m_MovementDataMap[m_TimingPlanName].m_MovementVector .size();i++) { DTANodeMovement movement = pNode->m_MovementDataMap[m_TimingPlanName].m_MovementVector[i]; CString str; str.Format ("%d", m_pDoc->m_NodeNoMap[movement.in_link_from_node_id]->m_NodeNumber ); // 0: from node int Index = m_ListCtrl.InsertItem(LVIF_TEXT,i,str , 0, 0, 0, NULL); int column_index = 1; str.Format ("%d", m_pDoc->m_NodeNoMap[movement.out_link_to_node_id ]->m_NodeNumber ); // 1: to node m_ListCtrl.SetItemText(Index, column_index++,str); m_ListCtrl.SetItemText(Index, column_index++,m_pDoc->GetTurnString(movement.movement_turn)); //2: turn type m_ListCtrl.SetItemText(Index, column_index++,m_pDoc->GetTurnDirectionString( movement.movement_approach_turn)); //3: turn type if(movement.turning_prohibition_flag == 1) str.Format ("Prohibited"); else str.Format (""); m_ListCtrl.SetItemText(Index, column_index++,str ); //4 str.Format ("%.0f",movement.sim_turn_count ); // 5: simulated volume m_ListCtrl.SetItemText(Index, column_index++,str ); float number_of_hours = max(0.01,(m_pDoc->m_TimingPlanVector[PlanNo].end_time_in_min - m_pDoc->m_TimingPlanVector[PlanNo].start_time_in_min )/60.0); float sim_turn_hourly_count = movement.sim_turn_count / number_of_hours; str.Format ("%.0f",sim_turn_hourly_count); // 6: simulated hourly volume m_ListCtrl.SetItemText(Index, column_index++,str ); str.Format ("%.1f",movement.sim_turn_delay*60 ); // 7: simulated turn delay m_ListCtrl.SetItemText(Index, column_index++,str ); str.Format ("%.1f",movement.QEM_StartTime ); // green start time m_ListCtrl.SetItemText(Index, column_index++,str ); str.Format ("%.1f",movement.QEM_EndTime ); // green end green time m_ListCtrl.SetItemText(Index, column_index++,str ); } UpdateData(0); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }