SHDoDragDrop 函数 (shlobj_core.h)

执行拖放操作。 支持按需创建拖动源以及拖动图像。

语法

SHSTDAPI SHDoDragDrop(
  [in]  HWND        hwnd,
  [in]  IDataObject *pdata,
  [in]  IDropSource *pdsrc,
  [in]  DWORD       dwEffect,
  [out] DWORD       *pdwEffect
);

参数

[in] hwnd

类型:HWND

用于获取拖动图像的窗口的句柄。 此值可以为 NULL。 有关更多详细信息,请参阅“备注”。

[in] pdata

类型: IDataObject*

指向包含所拖动数据的数据对象上的 IDataObject 接口的指针。

[in] pdsrc

类型: IDropSource*

指向 IDropSource 接口实现的指针,该接口用于在拖动操作期间与源通信。

从 Windows Vista 起,如果此值为 NULL,Shell 会为你创建一个放置源对象。

[in] dwEffect

类型:DWORD

源在拖放操作中允许的效果。 最重要的效果是拖放操作是否允许移动。 有关可能值的列表,请参阅 DROPEFFECT

[out] pdwEffect

类型: DWORD*

指向值的指针,该值指示拖放操作如何影响源数据。 仅当操作未取消时,才会设置 pdwEffect 参数。 有关可能值的列表,请参阅 DROPEFFECT

返回值

类型: HRESULT

此函数支持标准返回值E_OUTOFMEMORY,以及以下值:

返回代码 说明
DRAGDROP_S_DROP
拖放操作成功。
DRAGDROP_S_CANCEL
拖放操作已取消。
E_UNSPEC
出现了意外错误。

注解

从 Windows Vista 开始,如果拖动图像尚未存储在数据对象 pdtobj 中,并且无法从 hwnd 指定的窗口中获取拖动图像,则 Shell 将提供通用拖动图像。 由于 hwndNULL 或指定的窗口不支持DI_GETDRAGIMAGE消息,因此无法从指定窗口获取拖动图像。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 shlobj_core.h (包括 Shlobj.h)
Library Shell32.lib
DLL Shell32.dll (6.0 或更高版本)
API 集 ext-ms-win-shell-shell32-l1-2-1 (在 Windows 10 版本 10.0.10240 中引入)