2008년 11월 13일 목요일

[TreeCtrl] - TVN_SELCHANGED



TVN_SELCHANGED



- 한 항목에서 다른 항목으로 선택이 변경 되었을 때 발생하는 메시지

 

현재 선택된 트리뷰의 아이템 얻기
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
HTREEITEM hItem = pNMTreeView->itemNew.hItem;


즉, HTREEITEM hItem = pNMTreeView->itemNew.hItem;
hItem 으로 선택된 아이템(항목) 에 대한 작업을 하면 된다.



이벤트 메시지가 발생한 상황 판별LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);






pNMTreeView->action;


action 값을 조사하면 이벤트 메시지가 발생한 상황 판별 가능
TVE_EXPAND  :  아이템 확장 시
4096                :  Create된후에 포커스 받아서 Root가 선택되는 경우


0                    :   DeletaAllItems() 으로 호출됬을 경우
1                     : 내가 선택했을 경우

cf). 내 경험상 DeleteAllItems() 함수 호출 때 발생하지 않던데...



발생하는 경우

1. OnInitialUpdate() 함수에서 TreeCtrl 에 항목을 추가 하였을 때
   즉, 비어있는 TreeCtrl에 항목을 추가 시켰을 때 발생한다.
   (Create된후에 포커스 받아서 Root가 선택되는 경우)





cf) NMTREEVIEW 구조체 정보
    MSDN : http://msdn.microsoft.com/en-us/library/bb773411(VS.85).aspx


댓글 없음:

댓글 쓰기