MFC CTreeCtrl左键单击无法获取项的内容怎么回事?
voidCFileM::OnClickTree(NMHDR*pNMHDR,LRESULT*pResult){UpdateData(TRUE);m_list.DeleteA...
void CFileM::OnClickTree(NMHDR* pNMHDR,LRESULT* pResult)
{
UpdateData(TRUE);
m_list.DeleteALLItems();
NM_TREEUIEW *TREEVIEW =(NM_TREEVIEW *)pNMHDR;
hItem = TREEVIEW->itemNew.hItem;
if(hItem==FuINFO)
{
return;
}
CString connnet = m_tree.GetItemText(hItem);
if(connent.isEmpty())
{
return;
}
} 展开
{
UpdateData(TRUE);
m_list.DeleteALLItems();
NM_TREEUIEW *TREEVIEW =(NM_TREEVIEW *)pNMHDR;
hItem = TREEVIEW->itemNew.hItem;
if(hItem==FuINFO)
{
return;
}
CString connnet = m_tree.GetItemText(hItem);
if(connent.isEmpty())
{
return;
}
} 展开
1个回答
展开全部
你这是响应的哪个通知消息?
可以将pNMHDR转换成NM_TREEVIEW的,只有
TVN_BEGINDRAG
TVN_BEGINRDRAG
TVN_DELETEITEM
TVN_ITEMEXPANDED
TVN_ITEMEXPANDING
TVN_SELCHANGED
TVN_SELCHANGING
TVN_SINGLEEXPAND
如果响应的是NM_CLICK,只能用 NMHDR 结构,不过你可以使用CTreeCtrl的HitTest函数测试,鼠标点在哪个项目上
可以将pNMHDR转换成NM_TREEVIEW的,只有
TVN_BEGINDRAG
TVN_BEGINRDRAG
TVN_DELETEITEM
TVN_ITEMEXPANDED
TVN_ITEMEXPANDING
TVN_SELCHANGED
TVN_SELCHANGING
TVN_SINGLEEXPAND
如果响应的是NM_CLICK,只能用 NMHDR 结构,不过你可以使用CTreeCtrl的HitTest函数测试,鼠标点在哪个项目上
追问
是响应NM_CLICK,那应该怎么改才能获取到选中的项文本?
追答
上面已经写了用 HitTest 函数测试;调用 m_tree.HitTest
CPoint pt;
GetCursorPos(&pt);
m_tree.ScreenToClient(&pt);
hItem = m_tree.HitTest(pt);
更具体的使用见MSDN
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询