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

指示是否可以接受放置,如果可以接受,则表示放置的效果。

语法

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

返回代码 说明
E_UNEXPECTED
发生意外错误。
E_INVALIDARG
pdwEffect 参数在输入时为 NULL
E_OUTOFMEMORY
可用于此操作的内存不足。

注解

不直接调用 DragEnter ; DoDragDrop 函数会调用它,以确定用户首次将鼠标拖动到放置目标的已注册窗口中时放置的效果。

若要实现 DragEnter,必须通过检查以下三项来确定目标是否可以使用源数据对象中的数据:

  • 数据对象指定的格式和介质
  • pdwEffect 的输入值
  • 修改键的状态
若要检查格式和介质,请使用在 pDataObject 参数中传递的 IDataObject 指针调用 IDataObject::EnumFormatEtc,以便可以枚举源数据对象支持的 FORMATETC 结构。 然后调用 IDataObject::QueryGetData ,通过检查为数据对象指定的格式和介质来确定数据对象是否可以在目标上呈现数据。

在输入 IDropTarget::D ragEnter 时,pdwEffect 参数设置为提供给 DoDragDrop 函数的 pdwOkEffect 参数的效果。 IDropTarget::D ragEnter 方法必须选择这些效果之一或禁用放置。

以下修改键会影响删除的结果。

键组合 User-Visible 反馈 拖放效果
CTRL + SHIFT = DROPEFFECT_LINK
Ctrl + DROPEFFECT_COPY
无键或 SHIFT DROPEFFECT_MOVE
 

返回时, 方法必须将效果(DROPEFFECT 标志之一)写入 pdwEffect 参数。 然后,DoDragDrop 采用此参数并将其写入其 pdwEffect 参数。 通过 pdwEffect 参数中的 DoDragDrop 将回退效果传达给源。 然后,DoDragDrop 函数调用 IDropSource::GiveFeedback,以便源应用程序可以通过目标窗口向用户显示相应的视觉反馈。

要求

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

另请参阅

DragEnter

IDropSource

IDropSourceNotify

IDropTarget

RegisterDragDrop

RevokeDragDrop