Перетаскивание

Перетаскивание ссылается на передачу данных, в которой используется мышь или другое указывающее устройство, чтобы указать источник данных и его назначение. В обычной операции перетаскивания пользователь выбирает объект для передачи путем перемещения указателя мыши на него и удерживая на ней левую или другую кнопку, назначенную для этой цели. Продолжая удерживать кнопку, пользователь инициирует передачу путем перетаскивания объекта в место назначения, который может быть любым контейнером OLE. Перетаскивание обеспечивает точно те же функции, что и копирование и вставка буфера обмена OLE, но добавляет визуальные отзывы и устраняет необходимость в меню. На самом деле, если приложение поддерживает копирование и вставку буфера обмена, для поддержки перетаскивания требуется немного дополнительных.

Во время операции перетаскивания OLE используются три отдельных фрагмента кода.

Перетаскивание исходного кода Реализация и использование
Интерфейс IDropSource
Реализуется объектом, содержащим перетаскиваемые данные, называемым источником перетаскивания.
Интерфейс IDropTarget
Реализуется объектом, который предназначен для принятия удаления, называемого целевым объектом удаления.
Функция DoDragDrop
Реализован OLE и используется для запуска операции перетаскивания. После выполнения операции он упрощает обмен данными между источником перетаскивания и целевым объектом перетаскивания.

Интерфейсы IDropSource и IDropTarget можно реализовать в контейнере или в объектном приложении. Роль источника перетаскивания или целевого объекта перетаскивания не ограничивается одним типом приложения OLE.

Функция OLE DoDragDrop реализует цикл, который отслеживает перемещение мыши и клавиатуры до тех пор, пока не будет отменено перетаскивание. DoDragDrop — это ключевая функция в процессе перетаскивания, упрощающая взаимодействие между источником перетаскивания и целевым объектом перетаскивания.

Во время операции перетаскивания для пользователя можно отобразить три типа обратной связи.

Тип обратной связи Description
Отзывы о источнике
Предоставленный источником перетаскивания, исходный отзыв указывает, что данные перетаскиваются и не изменяются во время перетаскивания. Как правило, данные выделены для сигнала о том, что он был выбран.
Обратная связь указателя
Предоставленный источником перетаскивания, обратная связь указателя указывает, что происходит, если мышь выпущена в любой момент. Обратная связь указателя постоянно изменяется по мере перемещения мыши и /или нажатия клавиши модификатора. Например, если указатель перемещается в окно, которое не может принять удаление, указатель изменяется на символ "недопустимый".
Целевая обратная связь
При условии целевого объекта удаления целевая обратная связь указывает, где происходит удаление.

Дополнительные сведения см. в разделе "Обязанности источника перетаскивания".

Передача данных