RegisterDragDrop 函数 (ole2.h)

将指定窗口注册为可以是 OLE 拖放操作的目标窗口,并指定要用于删除操作的 IDropTarget 实例。

语法

HRESULT RegisterDragDrop(
  [in] HWND         hwnd,
  [in] LPDROPTARGET pDropTarget
);

参数

[in] hwnd

可成为 OLE 拖放操作目标的窗口的句柄。

[in] pDropTarget

指向指定窗口中要作为拖放操作目标的对象的 IDropTarget 接口的指针。 此接口用于传达该窗口的 OLE 拖放信息。

返回值

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

返回代码 描述
DRAGDROP_E_INVALIDHWND
hwnd 参数中返回的句柄无效。
DRAGDROP_E_ALREADYREGISTERED
指定的窗口已注册为放置目标。
E_OUTOFMEMORY
操作内存不足。
 
注意 如果使用 CoInitializeCoInitializeEx 而不是 OleInitialize 初始化 COM,RegisterDragDrop 将始终返回E_OUTOFMEMORY错误。
 

言论

如果应用程序可以在 OLE 拖放操作期间接受已删除的对象,则必须调用 RegisterDragDrop 函数。 每当某个应用程序窗口作为潜在删除目标可用时执行此操作;也就是说,当窗口在屏幕上未显示时。

调用 RegisterDragDrop 函数的应用程序线程必须泵送消息,这大概是通过调用具有 NULLhWnd 参数的 GetMessage 函数,因为 OLE 在需要处理消息的线程上创建窗口。 如果未满足此要求,则在目标应用程序关闭之前,将对象拖动到注册为放置目标的窗口上的任何应用程序都将挂起。

RegisterDragDrop 函数一次只注册一个窗口,因此必须为能够接受已删除对象的每个应用程序窗口调用它。

当鼠标在 OLE 拖放操作期间遍历目标窗口的未遮挡部分时,DoDragDrop 函数将调用当前窗口的指定 IDropTarget::D ragOver 方法。 当删除操作实际发生在给定窗口中时,doDragDrop 函数 调用 IDropTarget::D rop

RegisterDragDrop 函数还对 IDropTarget 指针调用 IUnknown::AddRef 方法。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 ole2.h
Ole32.lib
DLL Ole32.dll

另请参阅

RevokeDragDrop