【发布时间】:2014-03-12 13:12:40
【问题描述】:
我的问题是下面的函数被调用了两次:
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, &MainHamsterDlg::OnClickTree)
void MainHamsterDlg::OnClickTree(NMHDR* pNMHDR, LRESULT* pResult)
{
CTreeCtrl* pCtrl = (CTreeCtrl*)GetDlgItem(IDC_TREE1);
HTREEITEM hItem = pCtrl->GetSelectedItem();
BOOL hItemm = pCtrl->ItemHasChildren(hItem);
if (hItem && hItemm)
{
HTREEITEM hChild = pCtrl->GetChildItem(hItem);
pCtrl->SelectItem(hChild); <--- Cause of the "loop"
}
*pResult = 1;
}
我需要我的代码自动转到树的子元素。 (以后我会写一些代码来检测选择了什么,它会导致一些动作。)
当我点击一片叶子时,我的代码可以正常工作,因为:
if (hItem && hItemm)
确保:
pCtrl->SelectItem(hChild);
不会被执行。单击内部节点时如何使我的代码工作?
【问题讨论】:
标签: c++ loops mfc treecontrol