2009-11-21 7 views
4

Я использую API Win32 и MS Visual C++ 6 для создания древовидного представления структуры каталогов с флажками, связанными с каждым элементом дерева. Моя цель - проверить родительскую папку и автоматически проверить все связанные с ней дочерние элементы.Проверка элемента просмотра дерева Win32 автоматически проверяет все дочерние элементы

Однако, после того, как копаться в MSDN, я не смог найти уведомительное сообщение управления, для элемента, проверяется, только когда элемент выбран. Я рассмотрел использование уведомления о выборе, чтобы побудить программу опросить этот элемент и посмотреть, истинно ли его текущее состояние проверки, но я не уверен, что проверено. и selected можно связать таким образом, и я также обеспокоен накладными расходами, связанными с постоянными объектами опроса, когда пользователь перемещается по очень большому каталогу.

У кого-нибудь есть опыт в настройке этого сценария? Является ли моя озабоченность по поводу накладных расходов на опрос элемента GUI оправданным?

ответ

3

Начиная с Windows Vista Microsoft представила NM_TVSTATEIMAGECHANGING и соответствующую структуру NMTVSTATEIMAGECHANGING. Я не уверен, почему это не документировано с уведомлениями Tree View, но в разделе General Control Reference.

Этот код уведомления отправляется элементом управления деревом при изменении изображения состояния (т. Е. При щелчке по галочке).

У объекта NMTVSTATEIMAGECHANGING struct есть поле iOldStateImageIndex и iNewStateImageIndex, указывающее соответствующие изменения. Эта информация может использоваться для определения нового изображения состояния, которое будет отображаться (1 - это флажок, отмеченный флажком, и 2 - флажок)

Vista также вводит затемненные, частичные и исключенные проверки, хотя на данный момент я не уверен как они представлены индексом изображения состояния как два базовых случая выше.

Смежные вопросы