以下的说明中,注意以下变量的定义: CTreeCtrl m_treectrl;//是关联变量 1. 如何获得选中项句柄? HTREEITEM h=m_treectrl.GetSelectedItem(); 2.如何获得右击项句柄? void CLayerDialog::OnRclick(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; //右击获取所选项 CPoint point,p; TVHITTESTINFO HitTestInfo; GetCursorPos(&point); m_treectrl.ScreenToClient(&point); HitTestInfo.pt = point; HTREEITEM h = m_treectrl.HitTest(&HitTestInfo); if(h!=NULL) { 。。。。。//需要代码 } } 3.如何响应checkbox被单击? 响应单击事件,并且进行判断 void CLayerDialog::OnLclick(NMHDR *pNMHDR,LRESULT *pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here CPoint p; GetCursorPos(&p); m_treectrl.ScreenToClient(&p); UINT nFlag; HTREEITEM h=m_treectrl.HitTest(p,&nFlag); if ((h != NULL) && (TVHT_ONITEMSTATEICON & nFlag)) { 。。。。。//需要代码 } } 4.设置和获取checkbox的状态函数 GetCheck( ) SetCheck( ) 5.选中特定项 HTREEITEM h=…; m_treectrl.SelecteItem(h); 6.插入标记 这是拖曳时经常用到的函数。 BOOL SetInsertMark( HTREEITEM hItem, BOOL fAfter = TRUE ); TRUE表示在hItem下面显示横杠,而FALSE则表示在上面。 同类函数还有: SetInsertMarkColor,GetInsertMarkColor 7 .获得兄弟姐妹项 HTREEITEM GetPrevSiblingItem( HTREEITEM hItem ); HTREEITEM GetNextSiblingItem( HTREEITEM hItem ); 很好用的函数。但是要注意如果hItem是第一项,那么GetPrevSiblingItem返回NULL。此时要注意判断。GetNextSiblingItem同理。

评论