TVN_SELCHANGED 事件比较好用,但是不是万能的。
void CTestDlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
pNMTreeView->itemNew //选中HTREEITEMpNMTreeView->itemOld //上次选中HTREEITEM
*pResult = 0;
}
NM_CLICK 事件比较麻烦,不向TVN_SELCHANGED直接转换
void CfinalDlg::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
CPoint curPoint;
UINT nFlags;
HTREEITEM hItem;
GetCursorPos(&curPoint); //当前点坐标
tree.ScreenToClient(&curPoint); //屏幕坐标转换为TREE内坐标
hItem = tree.HitTest(curPoint, &nFlags); //坐标是否有ITEM
if(hItem && (TVHT_ONITEM & nFlags)) //判断是否有HTREEITEM
{
... 处理函数
}
}