拖放
拖放 是指使用鼠标或其他指向设备指定数据源及其目标的数据传输。 在典型的拖放作中,用户通过将鼠标指针移动到该对象并选择要传输的对象,并按住左侧按钮或为此指定的其他一些按钮。 在继续按住按钮时,用户通过将对象拖动到其目标(可以是任何 OLE 容器)来启动传输。 拖放提供与 OLE 剪贴板复制和粘贴完全相同的功能,但添加了视觉反馈,并且无需菜单。 事实上,如果应用程序支持剪贴板复制和粘贴,则只需额外一些来支持拖放。
在 OLE 拖放作期间,使用以下三个单独的代码片段。
拖放代码源 | 实现和使用 |
---|---|
IDropSource 接口 |
由包含拖动数据的对象实现,称为 拖动源。 |
IDropTarget 接口 |
由打算接受放置的对象实现,称为 删除目标。 |
DoDragDrop 函数 |
由 OLE 实现,用于启动拖放作。 作正在进行后,它有助于拖动源和放置目标之间的通信。 |
IDropSource 和 IDropTarget 接口可以在容器或对象应用程序中实现。 拖动源或拖放目标的角色不限于任何一种类型的 OLE 应用程序。
OLE 函数 DoDragDrop 实现一个循环,该循环跟踪鼠标和键盘移动,直到取消拖动或拖放。 DoDragDrop 是拖放过程中的关键功能,有助于拖动源和拖放目标之间的通信。
在拖放作期间,可以向用户显示三种类型的反馈。
反馈类型 | 描述 |
---|---|
源反馈 |
由拖动源提供,源反馈指示数据正在拖动,并且不会在拖动过程中更改。 通常,数据突出显示以表示已选择数据。 |
指针反馈 |
指针反馈由拖动源提供,指示鼠标在任何给定时刻释放时会发生什么情况。 当用户移动鼠标和/或按下修饰键时,指针反馈会不断变化。 例如,如果指针移动到无法接受放置的窗口中,指针将更改为“不允许”符号。 |
目标反馈 |
目标反馈由放置目标提供,指示放置位置。 |
有关详细信息,请参阅 拖动源责任。