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


Перетащите обязанности источника

Источник перетаскивания отвечает за следующие задачи:

  • Предоставление объекта передачи данных для целевого объекта удаления, предоставляющего интерфейсы IDataObject и IDropSource.
  • Создание указателя и обратной связи источника.
  • Определение того, когда операция перетаскивания отменена или произошла операция удаления.
  • Выполнение любого действия с исходными данными, вызванными операцией удаления, например удаление данных или создание ссылки на нее.

Основная задача — создание объекта передачи данных, предоставляющего интерфейсы IDataObject и IDropSource. Источник перетаскивания может или не включать копию выбранных данных. В том числе это не обязательно, но это помогает защититься от непреднамеренных изменений и позволяет коду операций буфера обмена быть идентичным коду перетаскивания.

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

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