MFC tree control 问题
我想右键点击能选择节点。我在右键点击消息中实现下面的代码。为什么不行呢~请指教CPointMyPoint;m_tree.ScreenToClient(&MyPoint);...
我想右键点击能选择节点。
我在右键点击消息中实现下面的代码。为什么不行呢~请指教
CPoint MyPoint;
m_tree.ScreenToClient(&MyPoint);
UINT uFlags;
HTREEITEM hItem = m_tree.HitTest(MyPoint, &uFlags);
if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
m_tree.SelectItem(hItem); 展开
我在右键点击消息中实现下面的代码。为什么不行呢~请指教
CPoint MyPoint;
m_tree.ScreenToClient(&MyPoint);
UINT uFlags;
HTREEITEM hItem = m_tree.HitTest(MyPoint, &uFlags);
if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
m_tree.SelectItem(hItem); 展开
展开全部
你需要由CTreeCtrl派生一个新类,比如CTreeCtrlEx
然后响应CTreeCtrlEx的NM_RCLICK消息,在其中添加如下代码
void CTreeCtrlEx::OnRclick(NMHDR* pNMHDR, LRESULT* pResult)
{
CPoint pt;
GetCursorPos(&pt);
ScreenToClient(&pt);
UINT uFlags;
HTREEITEM hItem = HitTest(pt, &uFlags);
if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
SelectItem(hItem);
*pResult = 0;
}
最后别忘了将m_tree的类型改为CTreeCtrlEx
然后响应CTreeCtrlEx的NM_RCLICK消息,在其中添加如下代码
void CTreeCtrlEx::OnRclick(NMHDR* pNMHDR, LRESULT* pResult)
{
CPoint pt;
GetCursorPos(&pt);
ScreenToClient(&pt);
UINT uFlags;
HTREEITEM hItem = HitTest(pt, &uFlags);
if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
SelectItem(hItem);
*pResult = 0;
}
最后别忘了将m_tree的类型改为CTreeCtrlEx
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
mfc里的treectrl可没有什么索引,因为节点的关系不一定是并列的兄弟关系,可能是父子关系或者说根与叶的关系。简单的序号是不能标志它们的。
节点的唯一标志用的节点句柄
htreeitem;
如果你真想给每个节点编个号,就用setitemdata()给每个节点绑定一个唯一的整数。
htreeitem
item=ctreectrl::getselecteditem();
int
num=getitemdata(item);
节点的唯一标志用的节点句柄
htreeitem;
如果你真想给每个节点编个号,就用setitemdata()给每个节点绑定一个唯一的整数。
htreeitem
item=ctreectrl::getselecteditem();
int
num=getitemdata(item);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询