Метод 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 при успешном завершении. Ниже перечислены другие возможные значения.
Код возврата | Описание |
---|---|
|
Произошла непредвиденная ошибка. |
|
Недопустимое значение pdwEffect . |
|
Недостаточно доступной памяти для этой операции. |
Комментарии
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 |