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);
展开
 我来答
fascinating_li
2008-08-07 · TA获得超过844个赞
知道小有建树答主
回答量:1944
采纳率:0%
帮助的人:1302万
展开全部
::GetCursorPos( &MyPoint); ;//获得屏幕坐标
放在第二行在转换之前
帅幻迩3N
2008-08-07 · TA获得超过682个赞
知道小有建树答主
回答量:486
采纳率:100%
帮助的人:301万
展开全部
你需要由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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
琴厚纵清秋
2020-02-21 · TA获得超过1073个赞
知道小有建树答主
回答量:1981
采纳率:100%
帮助的人:9.5万
展开全部
mfc里的treectrl可没有什么索引,因为节点的关系不一定是并列的兄弟关系,可能是父子关系或者说根与叶的关系。简单的序号是不能标志它们的。
节点的唯一标志用的节点句柄
htreeitem;
如果你真想给每个节点编个号,就用setitemdata()给每个节点绑定一个唯一的整数。
htreeitem
item=ctreectrl::getselecteditem();
int
num=getitemdata(item);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式