树形结构选中某个结点点击右键弹出菜单,怎么使树结构的焦点移至当前被点击的结点
树形结构选中某个结点点击右键弹出菜单,如何使树结构的焦点移至当前被点击的结点
在树形框中右键点击结点,弹出菜单,选中菜单的“重命名”菜单项,发现重命名的编辑框显示在树的根结点处,而不是我当前点击的菜单。重命名响应函数如下,请高手帮忙分析哈
void CMutiTreeDlg::OnRnameRmenu()
{
// TODO: Add your command handler code here
HTREEITEM hSel = m_MyTripleTree.GetSelectedItem();
CEdit* pmyEdit = m_MyTripleTree.EditLabel(hSel);
ASSERT(pmyEdit != NULL);
}
------解决方案--------------------
找找CTreeCtrl的HitTest函数,能通过它获取点击的节点。
再设置他为选择项,再去编辑。
------解决方案--------------------
楼主,你右击的时候有入参Point传入的。这个Point是当前的鼠标位置。
保存好。
用树的方法ScreenToClient转换屏幕坐标为控件坐标
然后用:HTREEITEM hTreeItem = pWndTree->HitTest(ptTree, &flags); //UINT flags = 0;
然后m_MyTripleTree.EditLabel(hTreeItem );
楼主,看看效果
在树形框中右键点击结点,弹出菜单,选中菜单的“重命名”菜单项,发现重命名的编辑框显示在树的根结点处,而不是我当前点击的菜单。重命名响应函数如下,请高手帮忙分析哈
void CMutiTreeDlg::OnRnameRmenu()
{
// TODO: Add your command handler code here
HTREEITEM hSel = m_MyTripleTree.GetSelectedItem();
CEdit* pmyEdit = m_MyTripleTree.EditLabel(hSel);
ASSERT(pmyEdit != NULL);
}
------解决方案--------------------
找找CTreeCtrl的HitTest函数,能通过它获取点击的节点。
再设置他为选择项,再去编辑。
------解决方案--------------------
楼主,你右击的时候有入参Point传入的。这个Point是当前的鼠标位置。
保存好。
用树的方法ScreenToClient转换屏幕坐标为控件坐标
然后用:HTREEITEM hTreeItem = pWndTree->HitTest(ptTree, &flags); //UINT flags = 0;
然后m_MyTripleTree.EditLabel(hTreeItem );
楼主,看看效果