RegisterDragDrop function (ole2.h)
Registers the specified window as one that can be the target of an OLE drag-and-drop operation and specifies the IDropTarget instance to use for drop operations.
HRESULT RegisterDragDrop( [in] HWND hwnd, [in] LPDROPTARGET pDropTarget );
Handle to a window that can be a target for an OLE drag-and-drop operation.
Pointer to the IDropTarget interface on the object that is to be the target of a drag-and-drop operation in a specified window. This interface is used to communicate OLE drag-and-drop information for that window.
This function returns S_OK on success. Other possible values include the following.
||Invalid handle returned in the hwnd parameter.|
||The specified window has already been registered as a drop target.|
||Insufficient memory for the operation.|
If your application can accept dropped objects during OLE drag-and-drop operations, you must call the RegisterDragDrop function. Do this whenever one of your application windows is available as a potential drop target, i.e., when the window appears unobscured on the screen.
The application thread that calls the RegisterDragDrop function must be pumping messages, presumably by calling the GetMessage function with a NULLhWnd parameter, because OLE creates windows on the thread that need messages processed. If this requirement is not met, any application that drags an object over the window that is registered as a drop target will hang until the target application closes.
The RegisterDragDrop function only registers one window at a time, so you must call it for each application window capable of accepting dropped objects.
As the mouse passes over unobscured portions of the target window during an OLE drag-and-drop operation, the DoDragDrop function calls the specified IDropTarget::DragOver method for the current window. When a drop operation actually occurs in a given window, the DoDragDrop function calls IDropTarget::Drop.
The RegisterDragDrop function also calls the IUnknown::AddRef method on the IDropTarget pointer.
|Minimum supported client||Windows 2000 Professional [desktop apps only]|
|Minimum supported server||Windows 2000 Server [desktop apps only]|