拖放

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

OLE 拖放操作期间会用到以下三个单独的代码片段。

拖放代码源 实现和使用
IDropSource 接口
由包含拖动数据的对象实现,称为拖动源
IDropTarget 接口
由用于接受放置的对象实现,称为放置目标
DoDragDrop 函数
由 OLE 实现,用于启动拖放操作。 此操作可促进拖动源和放置目标之间的通信。

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

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

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

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

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

数据传输