Program Language/API | MFC

[MFC] TreeCtrl Node 모두 확장하기

야곰야곰+책벌레 2021. 11. 23. 09:30
728x90
반응형

CTreeCtrl을 사용하여 아이템을 추가한 경우, 모두 닫혀 있게 되는데 매번 모두 여는 작업은 귀찮을 수 있다. 이를 위해서 한꺼번에 확장하는 함수를 만들어서 사용하게 된다.

 

우선 ITEM의 확장을 위해서는 간단하게 아래와 같이 만들 수 있다. ( 예는 Subclassing 한 경우다.)

void CMxTreeCtrl::ExpandTree(HTREEITEM hItem)
{
	if (this->ItemHasChildren(hItem))
	{
		Expand(hItem, TVE_EXPAND);
		HTREEITEM hChild = GetChildItem(hItem);
		if (hChild)
		{
			do
			{
				ExpandTree(hChild);
			} while (hChild = GetNextSiblingItem(hChild));
		}
	}
}

상위 Item을 넣으면 Child가 있는지 확인하고 계속해서 찾아 내려가는(재귀 호출) 함수다.

이때 변수에 ROOT 핸들을 넘겨주면 한꺼번에 열수 있다.

void CMxTreeCtrl::ExpandAll()
{
	ExpandTree(GetRootItem());
}

외부에서는 ExpandAll() 함수만 호출하면 된다.

728x90
반응형