Home COM GDI+ WebBrowser Data Access

IDropTarget Interface

 

IID_IDropTarget

{00000122-0000-0000-C000-000000000046}

 

 

The IDropTarget interface is one of the interfaces you implement to provide drag-and-drop operations in your application. It contains methods used in any application that can be a target for data during a drag-and-drop operation. A drop-target application is responsible for:

  • Determining the effect of the drop on the target application.

  • Incorporating any valid dropped data when the drop occurs.

  • Communicating target feedback to the source so the source application can provide appropriate visual feedback such as setting the cursor.

  • Implementing drag scrolling.

  • Registering and revoking its application windows as drop targets.

The IDropTarget interface contains methods that handle all these responsibilities except registering and revoking the application window as a drop target, for which you must call the RegisterDragDrop and the RevokeDragDrop functions.

 

You do not call the methods of IDropTarget directly. The DoDragDrop function calls the IDropTarget methods during the drag-and-drop operation.

For example, DoDragDrop calls IDropTarget::DragEnter when it detects the mouse has moved over a window that is registered as a drag target. Once the mouse has entered a drag-target window, DoDragDrop calls IDropTarget::DragOver as the mouse moves through the window and calls IDropTarget::DragLeave if the mouse leaves the target window or if the user cancels or completes the drag-and-drop operation. DoDragDrop calls IDropTarget::Drop if the drop finally occurs.
 

 

Methods in VTable order

IUnknown Methods

Description

QueryInterface

Returns pointers to supported interfaces.

AddRef

Increments reference count.

Release

Decrements reference count.

IDropTarget Methods

Description

DragEnter

Determines whether a drop can be accepted and its effect if it is accepted.

DragOver

Provides target feedback to the user through the DoDragDrop function.

DragLeave

Causes the drop target to suspend its feedback actions.

Drop

Drops the data into the target window.

 

DragEnter

 

FUNCTION IDropTarget_DragEnter ( _

  BYVAL pthis AS DWORD PTR _

, BYVAL pDataObject AS DWORD _

, BYVAL grfKeyState AS DWORD _

, BYVAL pt AS POINTL _   ' // Must be BYVAL

, BYREF pdwEffect AS DWORD _

  ) AS LONG

  LOCAL HRESULT AS LONG
  CALL DWORD @@pthis[3] USING IDropTarget_DragEnter (pthis, pDataObject, grfKeyState, pt, pdwEffect) TO HRESULT
  FUNCTION = HRESULT

END FUNCTION

 

 

DragOver

 

FUNCTION IDropTarget_DragOver ( _

  BYVAL pthis AS DWORD PTR _

, BYVAL grfKeyState AS DWORD _

, BYVAL pt AS POINTL _   ' // Must be BYVAL

, BYREF pdwEffect AS DWORD _

  ) AS LONG

  LOCAL HRESULT AS LONG
  CALL DWORD @@pthis[4] USING IDropTarget_DragOver (pthis, grfKeyState, pt, pdwEffect) TO HRESULT
  FUNCTION = HRESULT

END FUNCTION

 

 

DragLeave

 

FUNCTION IDropTarget_DragLeave ( _

  BYVAL pthis AS DWORD PTR _

  ) AS LONG

  LOCAL HRESULT AS LONG
  CALL DWORD @@pthis[5] USING IDropTarget_DragLeave (pthis) TO HRESULT
  FUNCTION = HRESULT

END FUNCTION

 

 

Drop

 

FUNCTION IDropTarget_Drop ( _

  BYVAL pthis AS DWORD PTR _

, BYVAL pDataObject AS DWORD _

, BYVAL grfKeyState AS DWORD _

, BYVAL pt AS POINTL _   ' // Must be BYVAL

, BYREF pdwEffect AS DWORD _

  ) AS LONG

  LOCAL HRESULT AS LONG
  CALL DWORD @@pthis[6] USING IDropTarget_Drop (pthis, pDataObject, grfKeyState, pt, pdwEffect) TO HRESULT
  FUNCTION = HRESULT

END FUNCTION

 

 

Page last updated on Monday, 10 July 2006 21:03:32 +0200