컴퓨터 공부/MFC 프로그래밍

[5월 19일 3교시] 트리 컨트롤

려리군 2009. 5. 19. 11:07

트리 컨트롤

데이터의 계층구조 표현

각 트리 아이템에 대해 데이터를 가질 수 있다.

아이콘 리소스 사용.

CTreeCtrl 

주로 사용하는 속성 : Has Button, Has Lines, Lines at Root


HTREEITEM

트리 컨트롤을 가리키는 유일한 핸들.

트리 컨트롤에서 접근하는 진입지점.

아이템을 추가할 때 얻는다.

아이템 그 자체로 간주된다.


구조체

TVITEM : 아이템에 관한 정보를 가짐. (HTREEITEM포함)

 - mask : 원하는 정보에 대한 편집을 고를 때. (이미지/문자 편집등)

TV_INSERTSTRUCT : 데이터 입력.

TV_DISPINFO : 아이템에 관한 이벤트 정보를 표현.


관련 함수

UINT CTreeCtrl::GetCount() const;

참고주소 : http://msdn.microsoft.com/en-us/library/3ac62s2x(VS.80).aspx

트리뷰 컨트롤에서 아이템의 수를 센다.

리턴 : 트리뷰의 아이템 수


HTREEITEM CTreeCtrl::GetParentItem(HTREEITEM hItem) const;

참고주소 : http://msdn.microsoft.com/en-us/library/aybe0edk(VS.80).aspx

hItem의 부모를 얻는다.

리턴 : 성공시 부모 아이템의 핸들, 실패시 NULL

hItem : 트리 아이템에 대한 핸들 


HTREEITEM CTreeCtrl::GetSelectedItem() const;

참고주소 : http://msdn.microsoft.com/en-us/library/xw6h5d91(VS.80).aspx

트리 뷰 컨트롤에서 현재 선택된 아이템을 얻는다.

리턴 : 성공시 선택된 아이템의 핸들. 실패시 NULL


HTREEITEM CTreeCtrl::GetRootItem( ) const;

참고주소 : http://msdn.microsoft.com/en-us/library/s69s56kc(VS.80).aspx

트리 뷰 컨트롤에서 루트(최상위 노드)의 아이템을 얻는다.

리턴 : 성공시 루트(최상위 노드) 아이템의 핸들. 실패시 NULL


BOOL CTreeCtrl::GetItem(TVITEM* pItem) const;

참고주소 : http://msdn.microsoft.com/en-us/library/s69s56kc(VS.80).aspx

특정 트리뷰 아이템에 대한 속성을 얻는다.

리턴 : 성공시 TRUE, 실패시 FALSE

pItem : 플랫폼 SDK에 묘사된 TV_ITEM 구조체의 포인터

 - TV_ITEM 구조체 : 트리뷰 아이템에 대한 속성. 


BOOL CTreeCtrl::SelectItem(HTREEITEM hItem);

참고주소 : http://msdn.microsoft.com/en-us/library/w8hy20sy(VS.80).aspx

주어진 트리 뷰 아이템을 선택한다.

리턴 : 성공시 TRUE, 실패시 FALSE

hItem : 트리 아이템의 핸들


CString CTreeCtrl::GetItemText(HTREEITEM hItem) const;

참고주소 : http://msdn.microsoft.com/en-us/library/5t2ff943(VS.80).aspx

hItem으로 정의된 item의 문자열을 얻는다.

리턴 : 아이템 문자열이 포함된 CString 객체

hItem : 얻고자 하는 문자열의 아이템 핸들.


BOOL CTreeCtrl::SetItemText(HTREEITEM hItem, LPCTSTR lpszItem);

참고주소 : http://msdn.microsoft.com/en-us/library/k02fxzex(VS.80).aspx

hItem으로 정의된 아이템의 문자열을 설정한다.

※ 다른 함수를 통해 이미지/상태/데이터의 아이템도 얻고 바꿀 수 있다.

리턴 : 성공시 TRUE, 실패시 FALSE

hItem : 설정될 문자열의 아이템에 대한 핸들.

lpszItem : 아이템에 대한 새로운 문자열에 대한 포인터.


아이템 추가

부모 노드의 핸들을 얻음.

TV_INSERTSTRUCT를 작성한다.

InsertItem호출.


HTREEITEM CTreeCtrl::InsertItem(LPTVINSERTSTRUCT lpInsertStruct);

참고주소 : http://msdn.microsoft.com/en-us/library/ettyybhw(VS.80).aspx

트리 뷰 컨트롤에서 새로 아이템을 추가한다.

※ 부모선택(hParent) -> 추가될 방식을 지정(hInsertAfter, 막내, 순서대로, 첫째 등)

리턴 : 성공시 새로운 아이템에 대한 핸들. 실패시 NULL


아이템 삭제

지우기 원하는 아이템의 핸들을 얻는다.

DeleteItem호출


BOOL CTreeCtrl::DeleteItem(HTREEITEM hItem)

참고주소 : http://msdn.microsoft.com/en-us/library/wdhxwhcx(VS.80).aspx

트리 뷰 컨트롤에서 아이템을 지운다.

리턴 : 성공시 TRUE, 실패시 FALSE

hItem : 지울 트리 아이템의 핸들. 만약 hItem이 TVI_ROOT 값을 가지고 있다면 모든 아이템이 트리 뷰 컨트롤에서 지워진다.


BOOL CTreeCtrl::DeleteAllItems( );

참고주소 : http://msdn.microsoft.com/en-us/library/x67k2482(VS.80).aspx

트리 뷰 컨트롱에서 모든 아이템을 지운다.

리턴 : 성공시 TRUE, 실패시 FALSE


아이템 갱신

갱신할 아이템의 핸들을 얻는다.

아이템에 관한 정보를 얻는다.(선택사항)

TV_ITEM 구조체를 작성한다.

SetItem 호출


BOOL CTreeCtrl::SetItem(TVITEM* pItem);

참고주소 : http://msdn.microsoft.com/en-us/library/ftcz4k70(VS.80).aspx

리턴 : 성공시 TRUE, 실패시 FALSE

pItem : TVITEM에 대한 포인터.