Можно ли снять некоторые флажки с узлов дерева?
Я сделал древовидный элемент управления в диалоговом окне, используя редактор ресурсов.
Я установил стиль флажка с помощью функции SetWindowLongPtr( ...), как описано в Microsoft.
Каждый узел имеет флажок таким образом, но мне нужно, чтобы только некоторые имели флажок, а некоторые не имели ничего стоящего рядом с их текстом (родительские узлы НЕ имеют флажок, только дочерние или простые -> без дочерних).
Может ли это быть достигнуто путем создания подкласса, или, возможно, с использованием пользовательского / владельца или, возможно, суперклассирования?
1 ответ
Древовидный элемент управления использует изображения состояний для рисования флажков. Согласно документам на TVS_CHECKBOXES
стиль:
Изображение состояния 1 - это флажок снят, а изображение состояния 2 - флажок. Установка состояния изображения на ноль снимает флажок в целом.
Итак, что-то вроде этого должно позволить вам снять флажок с элемента дерева:
TVITEM tvi;
tvi.hItem = hTreeItem;
tvi.mask = TVIF_STATE;
tvi.stateMask = TVIS_STATEIMAGEMASK;
tvi.state = 0;
TreeView_SetItem(hWndTree, &tvi);