//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void COP_Groups::UpdateGrouplist(void) { CMapDoc *pDoc = CMapDoc::GetActiveMapDoc(); if (pDoc == NULL) { return; } if(!::IsWindow(m_cGroups.m_hWnd)) return; int iSel = m_cGroups.GetCurSel(); DWORD oldselid = 0xffffffff; if(iSel != LB_ERR) oldselid = m_cGroups.GetItemData(iSel); m_cGroups.ResetContent(); if (IsMultiEdit()) { m_cGroups.InsertString(0, VALUE_DIFFERENT_STRING); m_cGroups.SetItemData(0, VALUE_DIFFERENT_ID); } m_cGroups.InsertString(0, NO_GROUP_STRING); m_cGroups.SetItemData(0, NO_GROUP_ID); POSITION pos = pDoc->VisGroups_GetHeadPosition(); while (pos != NULL) { CVisGroup *pGroup = pDoc->VisGroups_GetNext(pos); int iIndex = m_cGroups.AddString(pGroup->GetName()); m_cGroups.SetItemData(iIndex, pGroup->GetID()); } // restore old selection based on stored id iSel = 0; int iSize = m_cGroups.GetCount(); for(int i = 0; i < iSize; i++) { if(m_cGroups.GetItemData(i) == oldselid) { iSel = i; break; } } m_cGroups.SetCurSel(iSel); m_cGroups.Invalidate(); }