在CTreeCtrl控件点击事件中获取点击的项

网上搜了一下,有两种方法:

1、使用GetSelectedItem()

HTREEITEM hItem = m_treeCtrl.GetSelectedItem();
CString strText = m_treeCtrl.GetItemText(hItem);
MessageBox(strText);

2、使用HitTest()

CPoint pt;
GetCursorPos(&pt);
m_treeCtrl.ScreenToClient(&pt);
UINT uFlags;
HTREEITEM hItem = m_treeCtrl.HitTest(pt, &uFlags);
CString strText = m_treeCtrl.GetItemText(hItem);
MessageBox(strText);

总结:方法没有达到要求,因为在点击事件使用GetSelectedItem()获取的项是CTreeCtrl控件选中的项,并不一定是点击的项,因为它只会返回上次点击的项,因为上次点击的项在这次事件中是出于选中状态的,因此使用方法2.

原文地址:https://www.cnblogs.com/lit10050528/p/4141852.html