我的問題是,下面的函數被調用兩次:MFC樹控件通知觸發兩次
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);
將不會被執行。如何在內部節點被點擊時使我的代碼工作?
是的,我正在考慮這個解決方案......也許我必須使用它..也許有人會寫出更好的解決方案,但現在對我來說還可以。 thx – Klasik
對我而言,該解決方案效果更好 – Klasik