CTreeCtrl отключить перетаскивание на определенных узлах

Есть ли способ отключить перетаскивание на определенных узлах CTreeCtrl?

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

0

Решение

Это зависит только от того, как вы обрабатываете цель перетаскивания в обработчике перемещения мыши.

Вы не можете предотвратить TVN_BEGINDRAG функция. Но если предмет вообще не нужно перетаскивать, вы всегда используете SetDropTarget(NULL) в обработчике перемещения мыши, и если перетаскивание останавливается, вы ничего не делаете.

Когда элемент можно перетаскивать, вам просто нужно проверить, разрешена ли цель. Ты используешь HitTest чтобы найти целевой предмет, и вы можете проверить, разрешено ли здесь сбросить. Снова использовать SetDropTarget, Таким образом, пользователь может видеть, что разрешено.

Другим способом было бы реализовать Ole Drag&Drop функции как в этом примере здесь.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]