Drag and Drop: Implementing a Drop Source

 

The latest version of this topic can be found at Drag and Drop: Implementing a Drop Source.

This article explains how to get your application to provide data to a drag-and-drop operation.

Basic implementation of a drop source is relatively simple. The first step is to determine what events begin a drag operation. Recommended user interface guidelines define the beginning of a drag operation as the selection of data and a WM_LBUTTONDOWN event occurring on a point inside the selected data. The MFC OLE samples OCLIENT and HIERSVR follow these guidelines.

If your application is a container and the selected data is a linked or an embedded object of type COleClientItem, call its DoDragDrop member function. Otherwise, construct a COleDataSource object, initialize it with the selection, and call the data source object's DoDragDrop member function. If your application is a server, use COleServerItem::DoDragDrop. For information about customizing standard drag-and-drop behavior, see the article Drag and Drop: Customizing.

If DoDragDrop returns DROPEFFECT_MOVE, delete the source data from the source document immediately. No other return value from DoDragDrop has any effect on a drop source.

For more information, see:

See Also

Drag and Drop (OLE)
COleDataSource::DoDragDrop
COleClientItem::DoDragDrop
CView::OnDragLeave