Поделиться через


Операции перетаскивания древовидного элемента управления

Элемент управления деревом (CTreeCtrl) отправляет уведомление, когда пользователь начинает перетаскивать элемент. Элемент управления отправляет сообщение уведомления TVN_BEGINDRAG , когда пользователь начинает перетаскивать элемент с левой кнопкой мыши и сообщение уведомления TVN_BEGINRDRAG при начале перетаскивания с помощью правой кнопки. Вы можете запретить элементу управления деревом отправлять эти уведомления, предоставив элементу управления деревом стиль TVS_DISABLEDRAGDROP.

Изображение для отображения во время операции перетаскивания путем вызова функции элемента CreateDragImage . Элемент управления "Дерево" создает перетаскивание растрового изображения на основе метки перетаскиваемого элемента. Затем элемент управления "Дерево" создает список изображений, добавляет к нему растровое изображение и возвращает указатель на объект CImageList .

Необходимо указать код, который фактически перетаскивает элемент. Обычно это включает использование возможностей перетаскивания функций списка изображений и обработки сообщений WM_MOUSEMOVE и WM_LBUTTONUP (или WM_RBUTTONUP), отправленных после начала операции перетаскивания. Дополнительные сведения о функциях списка изображений см. в разделе CImageList в справочнике по MFC и списках изображений в пакете SDK для Windows. Дополнительные сведения о перетаскивании элемента управления деревом см. в статье "Перетаскивание элемента представления дерева" также в пакете SDK для Windows.

Если элементы в элементе управления "Дерево" должны быть целевыми объектами операции перетаскивания, необходимо знать, когда курсор мыши находится на целевом элементе. Вы можете узнать, вызвав функцию-член HitTest . Укажите точку и целое число или адрес структуры TVHITTESTINFO , которая содержит текущие координаты курсора мыши. Когда функция возвращается, целое число или структура содержит флаг, указывающий расположение курсора мыши относительно элемента управления деревом. Если курсор находится над элементом в элементе управления деревом, структура также содержит дескриптор элемента.

Можно указать, что элемент является целью операции перетаскивания, вызвав функцию-член SetItem , чтобы задать состояние значению TVIS_DROPHILITED . Элемент, имеющий это состояние, рисуется в стиле, используемом для указания целевого объекта перетаскивания.

См. также

Использование CTreeCtrl
Controls