Можно ли снять некоторые флажки с узлов дерева?

Я сделал древовидный элемент управления в диалоговом окне, используя редактор ресурсов.

Я установил стиль флажка с помощью функции 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);
Другие вопросы по тегам