Есть ли способ отключить перетаскивание на определенных узлах CTreeCtrl?
Я хотел бы предотвратить перетаскивание узла к дочернему элементу того же узла в том же дереве, а также предотвратить перетаскивание узла в просмотр списка, связанный с тем же узлом или одним из его дочерних элементов.
Это зависит только от того, как вы обрабатываете цель перетаскивания в обработчике перемещения мыши.
Вы не можете предотвратить TVN_BEGINDRAG
функция. Но если предмет вообще не нужно перетаскивать, вы всегда используете SetDropTarget(NULL)
в обработчике перемещения мыши, и если перетаскивание останавливается, вы ничего не делаете.
Когда элемент можно перетаскивать, вам просто нужно проверить, разрешена ли цель. Ты используешь HitTest
чтобы найти целевой предмет, и вы можете проверить, разрешено ли здесь сбросить. Снова использовать SetDropTarget
, Таким образом, пользователь может видеть, что разрешено.
Другим способом было бы реализовать Ole Drag&Drop функции как в этом примере здесь.
Других решений пока нет …