# IShDragAndDropUtilities Struct Reference
[Shell Utilities]

Inheritance diagram for IShDragAndDropUtilities:

List of all members.

## Public Member Functions
virtual MCCOMErr MCCOMAPI | CreateDropCandidate (IDType inDropCandidateExtension, IMFDropCandidate **outDropCandidate)=0
virtual MCCOMErr MCCOMAPI | CreateDropArea (IDType inDropAreaExtension, IMFPart *inAssociatedPart, IMFDropArea **outDropArea)=0
virtual MCCOMErr MCCOMAPI | StartDragAndDropAction (IMFDropCandidate *inDropCandidate, const TMCPoint &inScreenMousePos, const TMCRect &inScreenDragRect, const TMCRect &inScreenToleranceRect, boolean inTrackImmediately)=0

## Detailed Description

Utilities for drag and drop functionality. Drag and Drop works as follows:

- When the drag motion begins, you create a drop candidate that contains information about the object being dragged.
- As the object is dragged around the UI, CreateDropArea is called to create a Drop Area for the Part underneath the mouse cursor. The Drop Area can determine whether or not it is able to accept the Drop Candidate.
- If the drop area CAN accept the Drop Candidate, and the user releases the mouse button, the IMFExDropArea::ReceiveDrop() function is called to act on the drop.

## Member Function Documentation

virtual MCCOMErr MCCOMAPI IShDragAndDropUtilities::CreateDropArea | ( | IDType | inDropAreaExtension,
|  | IMFPart * | inAssociatedPart,
|  | IMFDropArea ** | outDropArea |
| ) |  |  | `[pure virtual]`

Creates a drop area for Drag and Drop actions. Creates an IMFDropArea and associated IMFExDropArea.

Parameters:

  | inDropAreaExtension | ID type for the drop area extension class to create
  | inAssociatedPart | Pointer to the part associated with this drop area
  | outDropArea | Returns a pointer to the drop area.

virtual MCCOMErr MCCOMAPI IShDragAndDropUtilities::CreateDropCandidate | ( | IDType | inDropCandidateExtension,
|  | IMFDropCandidate ** | outDropCandidate |
| ) |  |  | `[pure virtual]`

Creates a drop candidate for Drag and Drop actions. Creates an IMFDropCandidate and associated IMFExropCandidate.

Parameters:

  | inDropCandidateExtension | ID type for the drop candidate extension class to create
  | outDropCandidate | Returns a pointer to the drop candidate.

virtual MCCOMErr MCCOMAPI IShDragAndDropUtilities::StartDragAndDropAction | ( | IMFDropCandidate * | inDropCandidate,
|  | const TMCPoint & | inScreenMousePos,
|  | const TMCRect & | inScreenDragRect,
|  | const TMCRect & | inScreenToleranceRect,
|  | boolean | inTrackImmediately |
| ) |  |  | `[pure virtual]`

Posts a new drag and drop action.

Parameters:

  | inDropCandidate | Pointer to the Drop Candidate for this action
  | inScreenMousePos | Initial mouse position
  | inScreenDragRect | Coordinates in screen space bounding the object being dragged
  | inScreenToleranceRect | Tolerance rectangle for this drag action. The mouse must exit this rectangle before we start drawing the Drop Canditate under the mouse.
  | inTrackImmediately | If true, begins the tracking immediately, without waiting

The documentation for this struct was generated from the following file:

- IShUtilities.h