Как обрабатывать состояния tri-checkbox в ctreectrl в MFC?
Привет,
Я создал tri-state Ctreectrl в MFC, но при нажатии на флажок состояние не обновляется на одном экземпляре.
Например, я установил флажок, но с помощью GetItemState() я получаю 1 для каждого элемента. Если тот же самый пункт я снимаю, то меня проверяют. Итак, это возвращение старого состояния я пытаюсь получить новое состояние. Может ли кто-нибудь помочь мне каким-нибудь фрагментом кода ?
Что я уже пробовал:
Я поставил галочку на checkbox, но с помощью GetItemState() я получаю 1 для каждого элемента. Если тот же самый пункт я снимаю, то меня проверяют. Итак, это возвращение старого состояния, я пытаюсь получить новое состояние.
[Правка Йохена Арндта: скопировано из комментария]
ITreeCtrl m_FiletreeCtrl = DEBUG_NEW ITreeCtrl; HTREEITEM hItem = m_FiletreeCtrl->GetTreeCtrl().HitTest(point, &flags); HTREEITEM hItem2 = m_FilestreeCtrl->GetTreeCtrl().GetParentItem(hItem); HTREEITEM hChildItem = NULL; while(hItem22 != NULL) { hChildItem = m_FilestreeCtrl->GetTreeCtrl().GetChildItem(hItem22); while(hChildItem) { UINT nCurrentState = (m_FilestreeCtrl->GetTreeCtrl().GetItemState(hChildItem,TVIS_STATEIMAGEMASK)>>0xC); } }
В этом дереве я просто хочу знать, сколько элементов проверено, но GetItemState возвращает старое состояние.
[/РЕДАКТИРОВАТЬ]
Jochen Arndt
Где и когда вы вызываете GetItemState()?
Без просмотра используемого кода помочь невозможно.
Rais Shaikh
ITreeCtrl m_FiletreeCtrl = помощью debug_new ITreeCtrl;
HTREEITEM hItem = m_FiletreeCtrl->GetTreeCtrl().HitTest(point, &flags);
HTREEITEM hItem2 = m_FilestreeCtrl->GetTreeCtrl().GetParentItem(хитем);
HTREEITEM hChildItem = NULL;
while(hItem22 != NULL)
{
hChildItem = m_FilestreeCtrl->GetTreeCtrl().GetChildItem(hItem22);
пока(hChildItem)
{
UINT nCurrentState = (m_FilestreeCtrl->GetTreeCtrl().GetItemState(hChildItem,TVIS_STATEIMAGEMASK)>>0xC);
}
}
В этом дереве я просто хочу знать, сколько элементов проверено, но GetItemState возвращает старое состояние.