VC中树形控件,如何让判断是父节点还是子节点 50

树形控件创建好以后,添加了一个双击功能,如何过滤掉父节点,只有在双击最末端的子节点时才响应双击事件?... 树形控件创建好以后,添加了一个双击功能,如何过滤掉父节点,只有在双击最末端的子节点时才响应双击事件? 展开
 我来答
10...4@qq.com
2012-03-14 · TA获得超过245个赞
知道答主
回答量:119
采纳率:0%
帮助的人:56.4万
展开全部
滤过父节点不可能,但是双击目标,还可以产生响应的事件。这是我写过的代码:单击事件(可以改双击,内容一样)
首先再 建树时注意加上一句:
HTREEITEM root = m_tree.InsertItem(_T("图层集合"),TVI_ROOT);
m_tree.SetItemData(root, 0);//就是加上的语句,0(可变)就是后面的nDat

void TreeDolg::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
CPoint pt = GetCurrentMessage()->pt;//获取当前鼠标点击消息的坐标点

m_tree.ScreenToClient(&pt);//将鼠标的屏幕坐标,转换成树形控件的客户区坐标
UINT uFlags = 0;
HTREEITEM hItem = m_tree.HitTest(pt, &uFlags);//然后做点击测试
if ((hItem != NULL) && (TVHT_ONITEM & uFlags))//如果点击的位置是在节点位置上面

{
m_tree.SelectItem(hItem);
//获取开始我们设置的数据,注意这就是我为什么开始要每个节点设置不同的数据的原因。
//当然,如果你的数据节点比较少,你也可以通过获取节点的文字,如上面设置的"海淀区"
//,然后通过字符串比较来判断点击了哪个节点

int nDat = m_tree.GetItemData(hItem); //然后根据不同的节点,你完成不同的动作即可
switch(nDat)
{
case 0:
break;
default:
}
}

*pResult = 0;
}
zhjian_11mail
2012-03-15
知道答主
回答量:31
采纳率:0%
帮助的人:14.8万
展开全部
你可以在创建节点的时候,存取父节点的句柄,双击响应的时候判断当前点击的是否为父节点句柄,是的话,就有响应消息。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式