最近搞CTreeCtrl控件,发现只有节点展开事件,没有节点折叠事件,实际情况是展开和折叠走的是同一个事件TVN_ITEMEXPANDED(完成),要判断当前节点是展开还是折叠可以用下面的方法:
if (TVIS_EXPANDED & GetItemState(hItem, TVIS_EXPANDED)){
//展开节点
}
else{
//折叠节点
}
另外,在TVN_ITEMEXPANDED事件处理函数OnTvnItemexpanded(NMHDR *pNMHDR, LRESULT *pResult)中,要拿到当前折叠或展开的节点的HTREEITEM对象,可以用下面的代码:
HTREEITEM item = pNMTreeView->itemNew.hItem;