我的问题是以下函数被调用了两次:
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);
不会被执行。单击内部节点时,如何使我的代码工作?