본문 바로가기
Study/MFC

CtreeCtrl에서 전체 카테고리 펼치기!! 전체 노드 펼치기!!

by 뿡뿡대마왕 2011. 9. 28.
반응형

트리 컨트롤에 데이터를 집어 넣고 처음 보여줄때 ' 쫘악!!~~' 펴진 상태로 보여주고 싶을때가 있을것이다!!

자식 노드에 자식 노드 그리고 또 자식노드..이런건 프로그램을 해본 사람이라면 간단학 재귀함수를 이용해서 처리 할 수 있을것이다.

난 완전하게 재귀 함수를 사용해서 나타내지 않고 아래 정도만 주욱 펼쳐내는 코드를 작성해 볼 것이다.

이것을 보고 재귀함수를 이용해서 자식노드의 자식노드..그리고 또 자식노드까지 접근할 수 있는 코드를 쉽게 응용할 수 있을거라 생각한다. ㅡ,.ㅡ;; .. 절대 귀찮아서 안만드는 것이다 아니다!!  ㅋㅋ


    위에 형태 처럼 최상위 노드가 하나 있고 그 아래 3의 자식 노드가 있는 형태인데 위에 처럼 모두 펼친 상태로 
    보여 주고 싶은 것이다!!!

    저번에 포스팅에서 펼쳐지는 함수는 Expand함수 였다..ㅋㅋ
    자 그럼 위에처럼 펼치는 소스를 한번 간단하게 봐볼까나?  

 

       HTREEITEM parent, child;

parent = m_privacyTree.GetRootItem();                                 //최상위 노드의 핸들 가져온다.

m_privacyTree.Expand(parent,TVE_EXPAND);                    // 최상위놈을 쫘악 펼치고!!



child = m_privacyTree.GetNextItem(parent, TVGN_CHILD);   // 첫번째 자식 노드의 핸들을 가져온다.                                                                                                              // TVGN_CHILD는 첫번째 자식 노드를 가져온다.

m_privacyTree.Expand(child,TVE_EXPAND);                      // 첫번째로 가져온놈 쫘악 펼치고!

while(child != NULL)                                                        // 자..더이상 자식 노드가 없을때까지 돌린다.

{

child = m_privacyTree.GetNextItem(child, TVGN_NEXT);   // 다음 노드를 가져온다.

m_privacyTree.Expand(child,TVE_EXPAND);                   // 가져온 노드를 주욱 핀다!!

}

 
위에 소스를 보면 참 간단하다..저정도를 이해 한다면 쉽게 재귀 함수를 써서 자식노드의 자식노드까지 모두 접근이 가능할것이다.

물론 자식노드가 존재 하는지 않하는지 정도의 함수는 충분히 찾으리라고 생각된다.
------------
ItemHasChildren 함수 였던거 같은데.;..이걸로 자식노드 있는지 확인해 돌리면 될것이다~ㅋㅋ 공부합시다!;

[출처] CTreeCtrl 의 모든 item 값 출력|ㅇㄹㅇㄹ작성자 네이밍

 
 

반응형

댓글