Пример #1
0
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);
}