Поделиться через


Функция 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
Недостаточно памяти для операции.
 
Примечание Если вы используете CoInitialize или CoInitializeEx вместо OleInitialize для инициализации COM, RegisterDragDrop всегда возвращает ошибку E_OUTOFMEMORY.
 

Замечания

Если приложение может принимать удаленные объекты во время операций перетаскивания OLE, необходимо вызвать функцию RegisterDragDrop. Это делается всякий раз, когда одно из окон приложений доступно в качестве потенциального целевого объекта удаления; То есть, когда окно не отображается на экране.

Поток приложения, вызывающий функцию RegisterDragDrop, должен быть перекачивать сообщения, предположительно вызывая функцию getMess age GetMessage с параметром NULLhWnd, так как OLE создает окна в потоке, который нуждается в обработке сообщений. Если это требование не выполнено, любое приложение, перетаскивающее объект в окно, зарегистрированное в качестве целевого объекта, будет зависать до закрытия целевого приложения.

Функция RegisterDragDrop регистрирует только одно окно за раз, поэтому необходимо вызвать его для каждого окна приложения, способного принимать удаленные объекты.

Когда мышь передает неисправные части целевого окна во время операции перетаскивания OLE, функция DoDragDrop вызывает указанный метод IDropTarget::D ragOver для текущего окна. Когда операция удаления на самом деле происходит в заданном окне, функция DoDragDrop вызывает IDropTarget::D rop.

Функция RegisterDragDrop также вызывает метод IUnknown::AddRef указателя IDropTar get.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка ole2.h
библиотеки Ole32.lib
DLL Ole32.dll

См. также

RevokeDragDrop