[MFC] 트리 컨트롤(Tree control ) 만들기...

여러가지 항목을 묶어서 보려고 하니, 트리 컨트롤이 가장 적합해 보였다..

그래서 트리 컨트롤을 사용하기 위해 테스트를 해 보았다...


먼저 테스트용 다이얼로그 프로젝트를 만들었다.

그 후 트리 컨트롤을 선택하고,


다이얼 로그에다가 추가하였다..

여기까지는 정말 쉽다.


그리고 컴파일을 하면 이렇게 된다..  아직은 내용이 없기 때문에..

내용을 추가해보자..


트리컨트롤을 선택하고,


변수를 추가하자..

 


변수명만 적고 마침을 누른다...


그러면 헤더파일에 다음과 같은 변수가 추가된다..


그리고 cpp의 OnInitDialog() 함수로 간다. 그 곳의 초기화 작업부분에...


HTREEITEM  hRoot;

 hRoot = m_ctlTreeControl.InsertItem(L"root", 0/* nImage */, 1/* nSelectedImage */, TVI_ROOT, TVI_LAST ) ;

 HTREEITEM  hChild;

 hChild = m_ctlTreeControl.InsertItem(L"image", 1/* nImage */, 1/* nSelectedImage */, hRoot, TVI_LAST ) ;

소스를 추가한다.

그리고 컴파일을 다시 하면,

이렇게 root가 나와있고,


root를 더블클릭하면 image가 나온다..

하지만.. 먼가 아무런 연결선이 없으니.. 어색하다..

트리 컨트롤의 속성창을 보자...

 


Has Buttons가 False로 되어있는데 True로 바꾸자..


 Has Lines도 True로 바꾸고,


Lines At Root도 True로 바꾼다..

그리고 컴파일을 하면,

 

이렇게 + 와 선도 생기고,


클릭하면 아래의 image가 나온다...

트리 컨트롤을 이용하면서 가장 유의해야 할 점은 트리 컨트롤은 아이템하나당
독립적이라기 보다는 상위 부모에 속하기 때문에, 추가나 삭제를 할 때 꼭 주의

해서 해야한다.

트리컨트롤에 값을 클릭하였을 때 그 처리를 해주고 싶으면,

컨트롤 이벤트에서 TVN_SELCHANGED 이벤트의 함수를 정의하고,

그 내부에서..

CString strItem = m_ctlTreeCtrl1.GetItemText(pNMTreeView->itemNew.hItem);

이렇게 사용하여 얻어 올 수 있다.
Posted by 바람처럼..
|