拖动源责任

拖动源负责以下任务:

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

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

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

拖放