以下的说明中,注意以下变量的定义:
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同理。
评论