afx_msg void OnDoubleClk(NMHDR* pNMHDR, LRESULT* pResult);ON_NOTIFY_REFLECT(NM_DBLCLK, OnDoubleClk)
void CMyTree::OnDoubleClk(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; HTREEITEM hti = pNMTreeView->itemNew.hItem;
CString cs = GetItemText(hti);
AfxMessageBox(cs); HTREEITEM hti2 = pNMTreeView->itemOld.hItem;
cs = GetItemText(hti2);
AfxMessageBox(cs); *pResult = 0;
}
用如上方法添加后,可以看到两次消息框,但却得不到树节点的文本,不知问题出在哪里。
void CMyTree::OnDoubleClk(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; HTREEITEM hti = pNMTreeView->itemNew.hItem;
CString cs = GetItemText(hti);
AfxMessageBox(cs); HTREEITEM hti2 = pNMTreeView->itemOld.hItem;
cs = GetItemText(hti2);
AfxMessageBox(cs); *pResult = 0;
}
用如上方法添加后,可以看到两次消息框,但却得不到树节点的文本,不知问题出在哪里。
::GetCursorPos(&pt);
ScreenToClient(&pt);
HTREEITEM h = HitTest(pt);
if(h)
{
cs = GetItemText(h);
AfxMessageBox(cs);
}
CString cs = GetItemText(hti);
AfxMessageBox(cs);解决方法很简单,想知道原因在其他消息响应中用HTREEITEM hti = pNMTreeView->itemNew.hItem;
就可以,为什么在双击响应中不行?
CString cs = GetItemText(hti);
AfxMessageBox(cs);hti有可能是NULL,但是你没有判断,就要GetItemText,所以cs肯定也是空的了,
HTREEITEM hSelectedItem;
SelectedItem = m_treeCtrl.GetSelectedItem();
CString strTitle;
strTitle = m_treeCtrl.GetItemText(hSelectedItem);