IDropTarget::D rop 方法 (oleidl.h)

将源数据合并到目标窗口中,删除目标反馈并释放数据对象。

Syntax

HRESULT Drop(
  [in]      IDataObject *pDataObj,
  [in]      DWORD       grfKeyState,
  [in]      POINTL      pt,
  [in, out] DWORD       *pdwEffect
);

参数

[in] pDataObj

指向在拖放作中传输的数据对象的 IDataObject 接口的指针。

[in] grfKeyState

键盘上键盘修饰键的当前状态。 可能的值可以是任意标志的组合,MK_CONTROL、MK_SHIFT、MK_ALT、MK_BUTTON、MK_LBUTTON、MK_MBUTTON和MK_RBUTTON。

[in] pt

包含屏幕坐标中的当前光标坐标的 POINTL 结构。

[in, out] pdwEffect

在输入时,指向 DoDragDrop 函数的 pdwEffect 参数的值的指针。 返回时,必须包含 DROPEFFECT 标志之一,该标志指示删除作的结果。

返回值

此方法返回成功S_OK。 其他可能的值包括以下内容。

返回代码 Description
DRAGDROP_S_CANCEL
OLE 拖放作已取消。
E_UNEXPECTED
发生意外错误。
E_INVALIDARG
pdwEffect 参数无效。
E_OUTOFMEMORY
此作的内存不足。

注解

不直接调用此方法。 当用户完成拖放作时 ,DoDragDrop 函数将调用此方法。

在实现 Drop 中,必须将数据对象合并到目标中。 使用 IDataObject 中提供的格式(通过 pDataObj 提供),以及修改键的当前状态,以确定数据如何合并,例如链接或嵌入。

除了合并数据之外,还必须像 在 IDropTarget::D ragLeave 方法中那样清理:

  • 删除当前显示的任何目标反馈。
  • 释放对数据对象的任何引用。
还可以通过 DoDragDrop 将此作的效果传回源应用程序,以便在拖放作完成后,源应用程序可以清理:
  • 删除正在显示的任何源反馈。
  • 对数据进行任何必要的更改,例如,如果作已移动,则删除数据。

要求

Requirement 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows操作系统
Header oleidl.h

另请参阅

DoDragDrop

IDropSource

IDropSourceNotify

IDropTarget

RegisterDragDrop

RevokeDragDrop