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

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

语法

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

parameters

[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。 其他可能的值包括以下内容。

返回代码 说明
E_UNEXPECTED
发生意外错误。
E_INVALIDARG
pdwEffect 参数无效。
E_OUTOFMEMORY
可用于此操作的内存不足。

注解

请勿直接调用此方法。 当用户完成拖放操作时, DoDragDrop 函数会调用此方法。

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

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

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

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 oleidl.h

请参阅

DoDragDrop

IDropSource

IDropSourceNotify

IDropTarget

RegisterDragDrop

RevokeDragDrop