拖动源责任

拖动源负责以下任务:

  • 为公开 IDataObjectIDropSource 接口的放置目标提供数据传输对象。
  • 生成指针和源反馈。
  • 确定何时取消拖动操作或发生放置操作。
  • 对原始数据执行放置操作导致的任何操作,例如删除数据或创建指向数据的链接。

主要任务是创建一个公开 IDataObjectIDropSource 接口的数据传输对象。 拖动源可能包含或可能不包含所选数据的副本。 虽然不是强制包含,但这样做有助于防止意外更改,并使剪贴板操作代码与拖放代码保持一致。

拖动操作正在进行,拖动源负责设置鼠标指针,如果适用,则为用户提供其他源反馈。 拖动源无法提供跟踪鼠标位置的任何反馈,除非真的设置实际指针(请参阅 SetCursor 函数)。 必须强制实施此规则,以避免与放置目标提供的反馈发生冲突。 (拖动源也可以是放置目标。在自行放置时,源/目标当然可以提供目标反馈来跟踪鼠标位置。但是,这种情况下是跟踪鼠标的放置目标,而不是源。根据放置目标提供的反馈,源会设置适当的指针。

拖放