Функция 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 , должен перекачивать сообщения, предположительно путем вызова функции GetMessage с параметром NULLhWnd , так как OLE создает в потоке окна, требующие обработки сообщений. Если это требование не выполняется, любое приложение, перетаскивающее объект над окном, зарегистрированным как целевой объект, будет зависать до закрытия целевого приложения.

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

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

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

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header ole2.h
Библиотека Ole32.lib
DLL Ole32.dll

См. также раздел

RevokeDragDrop