void CStudentDemoListDlg::InitAvailableList(int nType) { if (!m_pTeacherFrame) return; if (!m_pDemoMemberInfo) return; m_wndAvailableList.DeleteAllItems(); m_wndAvailableList.EnableWindow(0 != nType); PMEMBERINFO ppMemberInfo[ELC_MAX_MEMBER_COUNT] = {0}; int nCount = m_pTeacherFrame->GetAllMemberInfoPtrs(ppMemberInfo); if (DEMO_TO_ALL == nType) { } else if (DEMO_TO_GROUP == nType) { typedef map<CString, CString> CGroupList; CGroupList listGroup; PMEMBERINFO pTemp = NULL; for (int i = 0; i < nCount; i++) { pTemp = ppMemberInfo[i]; if (m_pDemoMemberInfo == pTemp) continue; if (pTemp && (_tcslen(pTemp->szGroupName) > 0)) { CGroupList::iterator it = listGroup.find(pTemp->szGroupName); if (it == listGroup.end()) { listGroup.insert(CGroupList::value_type(pTemp->szGroupName, pTemp->szGroupName)); int nItem = m_wndAvailableList.InsertItem(m_wndAvailableList.GetItemCount(), pTemp->szGroupName); m_wndAvailableList.SetCheck(nItem, FALSE); } } } } else if (DEMO_TO_PART == nType) { PMEMBERINFO pTemp = NULL; for (int i = 0; i < nCount; i++) { pTemp = ppMemberInfo[i]; if (m_pDemoMemberInfo == pTemp) continue; if (pTemp && pTemp->bLoggedIn) { int nItem = m_wndAvailableList.InsertItem(m_wndAvailableList.GetItemCount(), pTemp->szDefaultName); m_wndAvailableList.SetItemData(nItem, (DWORD_PTR)pTemp); m_wndAvailableList.SetCheck(nItem, FALSE); } } } else ASSERT(0); }