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


Метод IDropTarget::D ragOver (oleidl.h)

Предоставляет пользователю целевую обратную связь и сообщает эффект удаления функции DoDragDrop , чтобы она оповестила о результате сброса обратно в источник.

Синтаксис

HRESULT DragOver(
  [in]      DWORD  grfKeyState,
  [in]      POINTL pt,
  [in, out] DWORD  *pdwEffect
);

Параметры

[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 .
E_OUTOFMEMORY
Недостаточно доступной памяти для этой операции.

Комментарии

DragOver не вызывается напрямую. Функция DoDragDrop вызывает этот метод каждый раз, когда пользователь перемещает мышь через заданное целевое окно. DoDragDrop завершает цикл, если операция перетаскивания отменена, если пользователь перетаскивает мышь из целевого окна или если удаление завершено.

При реализации IDropTarget::D ragOver необходимо предоставить функции, аналогичные функциям IDropTarget::D ragEnter. Вы должны определить влияние удаления данных на целевой объект, изучив FORMATETC , определяющий форматы и среду объекта данных, а также состояние ключей модификаторов. Положение мыши также может играть определенную роль в определении эффекта падения. Следующие клавиши-модификаторы влияют на результат удаления.

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

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

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

После возврата параметру pdwEffect присваивается один из флагов DROPEFFECT. Затем это значение передается параметру pdwEffectdoDragDrop. Разумные значения DROPEFFECT_COPY для копирования перетаскиваемых данных в целевой объект, DROPEFFECT_LINK для создания ссылки на исходные данные или DROPEFFECT_MOVE для окончательного перемещения перетаскиваемых данных из исходного приложения в целевой объект.

Вы также можете предоставить соответствующую визуальную обратную связь в целевом окне. Возможно, от предыдущего вызова IDropTarget::D ragOver или от начального IDropTarget::D ragEnter уже отображаются некоторые целевые отзывы. Если этот отзыв больше не подходит, его следует удалить.

Для повышения эффективности объект данных не передается в IDropTarget::D ragOver. Объект данных, переданный в последнем вызове IDropTarget::D ragEnter , доступен и может использоваться.

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

Примечания для разработчиков

Эта функция часто вызывается во время цикла DoDragDrop , поэтому имеет смысл максимально оптимизировать реализацию метода DragOver .

Требования

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

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

Dodragdrop

IDropSource

IDropSourceNotify

IDropTarget

RegisterDragDrop

RevokeDragDrop