Example #1
0
void Group::Add(CPtrList& listObj)
{
	Figure* pObj;
	POSITION pos = listObj.GetHeadPosition();
	while (pos)
	{
		pObj = (Figure*)listObj.GetNext(pos);
		pObj->SetGrouped(TRUE); //현재 개체가 그룹이 되었음을 표시
		if (pObj->thisobject() == MYGROUP) //그룹일 경우
			Child.AddTail((Group*)pObj); //차일드에 추가
		else //그룹이 아닐 경우
			NodeData.AddTail(pObj); //노드 데이터에 추가
	}
}
Example #2
0
// 그룹핑을 해제시키는 함수
void Group::DisGrouping(CPtrList& listObj, CPtrList& listObj2)
{
	//노드 데이터 부분의 그룹 해제
	POSITION posNode = this->NodeData.GetHeadPosition();
	while (posNode) //노드 데이터 리스트 순회
	{
		Figure* pObj = (Figure*)this->NodeData.GetNext(posNode);
		pObj->SetGrouped(FALSE); //그룹이 아님을 표시
		pObj->setSelected(TRUE);
		listObj.AddTail(pObj); //선택 리스트에 넣음
		listObj2.AddTail(pObj); //선택 리스트에 넣음
	}
	this->NodeData.RemoveAll();

	//차일드 부분의 그룹 해제
	POSITION posChild = this->Child.GetHeadPosition();
	while (posChild) //차일드 리스트 순회
	{
		Group* pObj = (Group*)this->Child.GetNext(posChild);
		pObj->SetGrouped(FALSE); //그룹이 아님을 표시
		listObj.AddTail(pObj); //선택 리스트에 넣음
		listObj2.AddTail(pObj); //선택 리스트에 넣음
	}
}