IDropTarget::DragOver  CO.PWZ

Provides target feedback to the user and communicates the drop s effect to the DoDragDrop3YY1_Q5 function so it can communicate the effect of the drop back to the source.

HRESULT DragOver(

    DWORD grfKeyState,

//Current state of keyboard modifier keys

    POINTL pt,

//Pointer to the current cursor coordinates

    DWORD * pdwEffect

//Pointer to the effect of the drag-and-drop operation

   );

 

 

Parameters

grfKeyState

[in] Current state of the keyboard modifier keys on the keyboard. Valid values can be a combination of any of the flags MK_CONTROL, MK_SHIFT, MK_ALT, MK_BUTTON, MK_LBUTTON, MK_MBUTTON, and MK_RBUTTON.

pt

[in] Pointer to the current cursor coordinates in the coordinate space of the drop-target window.

pdwEffect

[in, out] Pointer to the current effect flag. Valid values are from the enumeration DROPEFFECTVK63LO.

 

Return Values

This method supports the standard return values E_INVALIDARG, E_OUTOFMEMORY, and E_UNEXPECTED, as well as the following:

S_OK

The method completed its task successfully.

 

Remarks

You do not call IDropTarget::DragOver directly. The DoDragDrop3YY1_Q5 function calls this method each time the user moves the mouse across a given target window. DoDragDrop exits the loop if the drag-and-drop operation is canceled, if the user drags the mouse out of the target window, or if the drop is completed.

In implementing IDropTarget::DragOver, you must provide features similar to those in IDropTarget::DragEnterYJ8QYN. You must determine the effect of dropping the data on the target by examining the FORMATETC8CSQ18 defining the data object s formats and medium, along with the state of the modifier keys. The mouse position may also play a role in determining the effect of a drop. The following modifier keys affect the result of the drop:

Key Combination

User-Visible Feedback

Drop Effect

CTRL + SHIFT

=

DROPEFFECT_LINK

CTRL

+

DROPEFFECT_COPY

No keys or SHIFT

None

DROPEFFECT_MOVE

 

You communicate the effect of the drop back to the source through DoDragDrop3YY1_Q5 in pdwEffect. The DoDragDrop function then calls IDropSource::GiveFeedback5ZW3L4 so the source application can display the appropriate visual feedback to the user.

On entry to IDropTarget::DragOver, the pdwEffect parameter must be set to the allowed effects passed to the pdwOkEffect parameter of the DoDragDrop function. The IDropTarget::DragOver method must be able to choose one of these effects or disable the drop.

Upon return, pdwEffect is set to one of the members of the DROPEFFECT enumeration. This value is then passed to the pdwEffect parameter of DoDragDrop3YY1_Q5. Reasonable values are DROPEFFECT_COPY to copy the dragged data to the target, DROPEFFECT_LINK to create a link to the source data, or DROPEFFECT_MOVE to allow the dragged data to be permanently moved from the source application to the target.

You may also wish to provide appropriate visual feedback in the target window. There may be some target feedback already displayed from a previous call to IDropTarget::DragOver or from the initial IDropTarget::DragEnterYJ8QYN. If this feedback is no longer appropriate, you should remove it.

For efficiency reasons, a data object is not passed in IDropTarget::DragOver. The data object passed in the most recent call to IDropTarget::DragEnter is available and can be used.

When IDropTarget::DragOver has completed its operation, the DoDragDrop function calls IDropSource::GiveFeedback5ZW3L4 so the source application can display the appropriate visual feedback to the user.

Notes to Implementers

This function is called frequently during the DoDragDrop3YY1_Q5 loop so it makes sense to optimize your implementation of the DragOver method as much as possible.

See Also

DoDragDrop, IDropSource, IDropTarget, RegisterDragDrop, RevokeDragDrop