У меня есть TreeView, который позволяет пользователям выбирать определенные элементы иерархических данных, устанавливая или снимая флажок каждого элемента. В настоящее время я отключаю флажок на узлах, у которых есть дети, с помощью метода скрытия флажка из другого вопроса , например:
☑ Node 1
☐ Node 2
• Node 3
☑ Node 3.1
☑ Node 3.2
• Node 4
☐ Node 4.1
☑ Node 4.2
Но лучшим решением было бы использовать флажки с тремя состояниями для родительских узлов, например:
☑ Node 1
☐ Node 2
☑ Node 3
☑ Node 3.1
☑ Node 3.2
☒ Node 4
☐ Node 4.1
☑ Node 4.2
Поскольку эта функциональность была доступна в Win32, мой вопрос заключается в том, как сделать это, не рисуя прямоугольники самостоятельно (например, как пользовательский элемент управления или с использованием списка изображений ). Я совсем не знаком с Win32 API; как можно расширить описанную выше методику, чтобы включить трехуровневые проверки на управляемом элементе управления TreeView?