拖放

拖放 是指使用鼠标或其他指向设备指定数据源及其目标的数据传输。 在典型的拖放作中,用户通过将鼠标指针移动到该对象并选择要传输的对象,并按住左侧按钮或为此指定的其他一些按钮。 在继续按住按钮时,用户通过将对象拖动到其目标(可以是任何 OLE 容器)来启动传输。 拖放提供与 OLE 剪贴板复制和粘贴完全相同的功能,但添加了视觉反馈,并且无需菜单。 事实上,如果应用程序支持剪贴板复制和粘贴,则只需额外一些来支持拖放。

在 OLE 拖放作期间,使用以下三个单独的代码片段。

拖放代码源 实现和使用
IDropSource 接口
由包含拖动数据的对象实现,称为 拖动源
IDropTarget 接口
由打算接受放置的对象实现,称为 删除目标
DoDragDrop 函数
由 OLE 实现,用于启动拖放作。 作正在进行后,它有助于拖动源和放置目标之间的通信。

IDropSourceIDropTarget 接口可以在容器或对象应用程序中实现。 拖动源或拖放目标的角色不限于任何一种类型的 OLE 应用程序。

OLE 函数 DoDragDrop 实现一个循环,该循环跟踪鼠标和键盘移动,直到取消拖动或拖放。 DoDragDrop 是拖放过程中的关键功能,有助于拖动源和拖放目标之间的通信。

在拖放作期间,可以向用户显示三种类型的反馈。

反馈类型 描述
源反馈
由拖动源提供,源反馈指示数据正在拖动,并且不会在拖动过程中更改。 通常,数据突出显示以表示已选择数据。
指针反馈
指针反馈由拖动源提供,指示鼠标在任何给定时刻释放时会发生什么情况。 当用户移动鼠标和/或按下修饰键时,指针反馈会不断变化。 例如,如果指针移动到无法接受放置的窗口中,指针将更改为“不允许”符号。
目标反馈
目标反馈由放置目标提供,指示放置位置。

有关详细信息,请参阅 拖动源责任

数据传输