Метод 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

На входных данных указатель на значение параметра pdwEffect функции DoDragDrop . При возврате должен содержать один из флагов DROPEFFECT , который указывает результат операции удаления.

Возвращаемое значение

Этот метод возвращает значение S_OK при успешном завершении. Ниже перечислены другие возможные значения.

Код возврата Описание
E_UNEXPECTED
Произошла непредвиденная ошибка.
E_INVALIDARG
Параметр pdwEffect имеет значение NULL на входных данных.
E_OUTOFMEMORY
Недостаточно доступной памяти для этой операции.

Комментарии

DragEnter не вызывается напрямую; Вместо этого функция DoDragDrop вызывает ее для определения эффекта перетаскивания при первом перетаскивании мыши в зарегистрированное окно целевого объекта перетаскивания.

Чтобы реализовать DragEnter, необходимо определить, может ли целевой объект использовать данные в исходном объекте данных, проверив три вещи:

  • Формат и среда, заданные объектом данных
  • Входное значение pdwEffect
  • Состояние клавиш-модификаторов
Чтобы проверка формат и средний, используйте указатель IDataObject, переданный в параметре pDataObject, чтобы вызвать IDataObject::EnumFormatEtc, чтобы можно было перечислить структуры FORMATETC, поддерживаемые объектом исходных данных. Затем вызовите метод IDataObject::QueryGetData , чтобы определить, может ли объект данных отображать данные в целевом объекте, изучив форматы и среду, указанные для объекта данных.

При входе в IDropTarget::D ragEnterпараметру pdwEffect присваиваются эффекты, заданные параметру pdwOkEffect функции DoDragDrop . Метод IDropTarget::D ragEnter должен выбрать один из этих эффектов или отключить удаление.

Следующие клавиши-модификаторы влияют на результат удаления.

Сочетание клавиш Отзывы User-Visible Эффект перетаскивания
CTRL+SHIFT = DROPEFFECT_LINK
CTRL + DROPEFFECT_COPY
Без ключей или SHIFT None DROPEFFECT_MOVE
 

При возврате метод должен записать эффект (один из флагов DROPEFFECT) в параметр pdwEffect . Затем DoDragDrop принимает этот параметр и записывает его в свой параметр pdwEffect. Вы сообщаете о результате отката в источник с помощью DoDragDrop в параметре pdwEffect . Затем функция DoDragDrop вызывает IDropSource::GiveFeedback , чтобы исходное приложение хозяйка хозяйки хозяйки отображало соответствующую визуальную обратную связь для пользователя через целевое окно.

Требования

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

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

DragEnter

IDropSource

IDropSourceNotify

IDropTarget

RegisterDragDrop

RevokeDragDrop