Чтобы включить или отключить флажки для отдельных элементов дерева, необходимо отправить TVM_SETITEM
сообщений , которые используются для установки атрибутов для элементов в TreeView.
В документации сказано, что wParam
должен быть нулем, а lParam
является указателем на TVITEM
структуру , которая содержит новые атрибуты элемента.
Таким образом, настоящая битва заключается в заполнении структуры TVITEM
соответственно. Вот важные части:
- Член
hItem
должен содержать дескриптор элемента дерева, который вы хотите изменить.
- Элемент
mask
должен быть установлен в TVIF_STATE
, что означает, что элементы state
и stateMask
являются действительными. Это те, которые вы будете использовать для включения и выключения флажков.
- Элемент
state
может быть установлен в 0, что будет скрывать флажок для указанного элемента дерева.
Чтобы показать флажок для элемента дерева, установите для этого члена значение 1 << 12
. (Подробнее см. документы .
- Элемент
stateMask
должен быть установлен в TVIS_STATEIMAGEMASK
, чтобы указать, что вы изменяете индекс изображения состояния элемента.
Поскольку вы установили mask
, чтобы указать, что вы используете только элементы state
и stateMask
, вы можете счастливо игнорировать остальных членов.
И, наконец, после того, как вы установили структуру TVITEM
, вы можете использовать стандартную функцию SendMessage
или TreeView_SetItem
макрос , чтобы отправить сообщение элементу дерева .
(Конечно, весь TreeView должен иметь стиль TVS_CHECKBOXES
, чтобы все вышеперечисленное работало! Но вы сказали, что уже поняли, как это сделать.)