树控件的节点单选的问题?
加载一了一棵树以后,用如下代码实现节点的单选,但是发现如果在上下两个节点之间快速钩选的时候,出现两个节点同时被选上。原因在哪里呢?
首先添加树控件消息
ON_NOTIFY(NM_CLICK, IDC_TREE, OnClickTree)
实现函数为
void CMyDlg::OnClickTree(NMHDR* pNMHDR, LRESULT* pResult)
{
UINT uFlags=0;
CPoint point = GetCurrentMessage()->pt;
m_treeCtrl.ScreenToClient(&point);
HTREEITEM hItem = m_treeCtrl.HitTest(point, &uFlags);
if (hItem!=NULL)
{
m_treeCtrl.SelectItem(hItem);
if(uFlags&TVHT_ONITEMSTATEICON)
{
if(m_hCheckedItem != NULL && m_hCheckedItem != hItem )
m_treeCtrl.SetCheck(m_hCheckedItem, FALSE);
m_hCheckedItem = hItem;
}
}
*pResult = 0;
}
// hCheckedItem 初始化为NULL
首先添加树控件消息
ON_NOTIFY(NM_CLICK, IDC_TREE, OnClickTree)
实现函数为
void CMyDlg::OnClickTree(NMHDR* pNMHDR, LRESULT* pResult)
{
UINT uFlags=0;
CPoint point = GetCurrentMessage()->pt;
m_treeCtrl.ScreenToClient(&point);
HTREEITEM hItem = m_treeCtrl.HitTest(point, &uFlags);
if (hItem!=NULL)
{
m_treeCtrl.SelectItem(hItem);
if(uFlags&TVHT_ONITEMSTATEICON)
{
if(m_hCheckedItem != NULL && m_hCheckedItem != hItem )
m_treeCtrl.SetCheck(m_hCheckedItem, FALSE);
m_hCheckedItem = hItem;
}
}
*pResult = 0;
}
// hCheckedItem 初始化为NULL
...全文
相关推荐
MFC树控件的各种节点
这个小程序中有各种树控件的节点,项radio,checked,link,普通等
动态添加、删除树控件的节点,获取树形控件的选中项
动态添加、删除树控件的节点,获取树形控件的选中项
VC++从树控件中删除节点项
摘要:VC/C++源码,控件相关,树控,树形菜单 VC++从树控件中删除项目,删除节点或删除节点中的项目,一个树形菜单的应用源码,树控菜单应用广泛 ,在窗体中十分常见。
可拖拽子节点的树控件
从CTreeCtrl继承的类,实现拖拽节点,可拖拽带子节点的节点,拖拽时有图标和文本跟随鼠标。
asp+ext js节点树控件解决了图标问题和按钮问题
本案例实现了节点树 用ext+asp.net实现的,需要的请看


界面
