私の問題は、次の関数が 2 回呼び出されることです。
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);
実行されません。内部ノードがクリックされたときにコードを機能させるにはどうすればよいですか?