vc6.0 为什么CTreeCtrl.GetSelectedItem() 取得的是选中之前的item
[code=C/C++]
// TreeCtrl的单击响应函数
void CCapture2Dlg::OnClickTreeStudents(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
HTREEITEM hItem = m_pStudentTree-> GetSelectedItem();
if(hItem != m_hRoot) {
CString csId;
csId.Format( "%s ", m_pStudentTree-> GetItemText(hItem));
MessageBox(csId);
}
*pResult = 0;
}
[/code]
为什么我用GetSelectedItem()方法取得的是单击之前选中的函数呢?
例如:有两个节点,文本分别为 a 和 b,其中a处于选中状态,我点击b后弹出的是a的内容,是焦点离开的item的内容而不是当前焦点item的内容
[解决办法]
大致上是这样的:
- C/C++ code
CPoint pt;GetCursorPos(&pt);m_tree.ScreenToClient(&pt);HTREEITEM hItem = tree.HitTest(pt);if(NULL != hItem){ ....}
[解决办法]
LS 的正解
也贴个自己的
- C/C++ code
int i; UINT hFlag; CPoint pt; GetCursorPos(&pt); m_TreeCtrl.ScreenToClient(&pt); HTREEITEM hItem = m_TreeCtrl.HitTest(pt,&hFlag); if ((hItem!=NULL)&&(TVHT_ONITEM&hFlag)) { ....... }