COleDropTarget Class
Provides the communication mechanism between a window and the OLE libraries.
Syntax
class COleDropTarget : public CCmdTarget
Members
Public Constructors
Name | Description |
---|---|
COleDropTarget::COleDropTarget | Constructs a COleDropTarget object. |
Public Methods
Name | Description |
---|---|
COleDropTarget::OnDragEnter | Called when the cursor first enters the window. |
COleDropTarget::OnDragLeave | Called when the cursor is dragged out of the window. |
COleDropTarget::OnDragOver | Called repeatedly when the cursor is dragged over the window. |
COleDropTarget::OnDragScroll | Called to determine whether the cursor is dragged into the scroll region of the window. |
COleDropTarget::OnDrop | Called when data is dropped into the window, default handler. |
COleDropTarget::OnDropEx | Called when data is dropped into the window, initial handler. |
COleDropTarget::Register | Registers the window as a valid drop target. |
COleDropTarget::Revoke | Causes the window to cease being a valid drop target. |
Remarks
Creating an object of this class allows a window to accept data through the OLE drag-and-drop mechanism.
To get a window to accept drop commands, you should first create an object of the COleDropTarget
class, and then call the Register function with a pointer to the desired CWnd
object as the only parameter.
For more information on drag-and-drop operations using OLE, see the article OLE drag and drop.
Inheritance Hierarchy
COleDropTarget
Requirements
Header: afxole.h
COleDropTarget::COleDropTarget
Constructs an object of class COleDropTarget
.
COleDropTarget();
Remarks
Call Register to associate this object with a window.
COleDropTarget::OnDragEnter
Called by the framework when the cursor is first dragged into the window.
virtual DROPEFFECT OnDragEnter(
CWnd* pWnd,
COleDataObject* pDataObject,
DWORD dwKeyState,
CPoint point);
Parameters
pWnd
Points to the window the cursor is entering.
pDataObject
Points to the data object containing the data that can be dropped.
dwKeyState
Contains the state of the modifier keys. This is a combination of any number of the following: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON, and MK_RBUTTON.
point
Contains the current location of the cursor in client coordinates.
Return Value
The effect that would result if a drop were attempted at the location specified by point. It can be one or more of the following:
DROPEFFECT_NONE A drop would not be allowed.
DROPEFFECT_COPY A copy operation would be performed.
DROPEFFECT_MOVE A move operation would be performed.
DROPEFFECT_LINK A link from the dropped data to the original data would be established.
DROPEFFECT_SCROLL A drag scroll operation is about to occur or is occurring in the target.
Remarks
Override this function to allow drop operations to occur in the window. The default implementation calls CView::OnDragEnter, which simply returns DROPEFFECT_NONE by default.
For more information, see IDropTarget::DragEnter in the Windows SDK.
COleDropTarget::OnDragLeave
Called by the framework when the cursor leaves the window while a dragging operation is in effect.
virtual void OnDragLeave(CWnd* pWnd);
Parameters
pWnd
Points to the window the cursor is leaving.
Remarks
Override this function if you want special behavior when the drag operation leaves the specified window. The default implementation of this function calls CView::OnDragLeave.
For more information, see IDropTarget::DragLeave in the Windows SDK.
COleDropTarget::OnDragOver
Called by the framework when the cursor is dragged over the window.
virtual DROPEFFECT OnDragOver(
CWnd* pWnd,
COleDataObject* pDataObject,
DWORD dwKeyState,
CPoint point);
Parameters
pWnd
Points to the window that the cursor is over.
pDataObject
Points to the data object that contains the data to be dropped.
dwKeyState
Contains the state of the modifier keys. This is a combination of any number of the following: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON, and MK_RBUTTON.
point
Contains the current location of the cursor in client coordinates.
Return Value
The effect that would result if a drop were attempted at the location specified by point. It can be one or more of the following:
DROPEFFECT_NONE A drop would not be allowed.
DROPEFFECT_COPY A copy operation would be performed.
DROPEFFECT_MOVE A move operation would be performed.
DROPEFFECT_LINK A link from the dropped data to the original data would be established.
DROPEFFECT_SCROLL Indicates that a drag scroll operation is about to occur or is occurring in the target.
Remarks
This function should be overridden to allow drop operations to occur in the window. The default implementation of this function calls CView::OnDragOver, which returns DROPEFFECT_NONE by default. Because this function is called frequently during a drag-and-drop operation, it should be optimized as much as possible.
For more information, see IDropTarget::DragOver in the Windows SDK.
Example
DROPEFFECT COleContainerView::OnDragOver(COleDataObject* pDataObject,
DWORD dwKeyState, CPoint point)
{
UNREFERENCED_PARAMETER(pDataObject);
UNREFERENCED_PARAMETER(point);
DROPEFFECT de = DROPEFFECT_NONE;
//Determine the type of operation
if ((dwKeyState & MK_SHIFT) && (dwKeyState & MK_CONTROL))
de = DROPEFFECT_LINK;
else if (dwKeyState & MK_CONTROL)
de = DROPEFFECT_COPY;
else if (dwKeyState & MK_SHIFT)
de = DROPEFFECT_MOVE;
return de;
}
COleDropTarget::OnDragScroll
Called by the framework before calling OnDragEnter or OnDragOver to determine whether point is in the scrolling region.
virtual DROPEFFECT OnDragScroll(
CWnd* pWnd,
DWORD dwKeyState,
CPoint point);
Parameters
pWnd
Points to the window the cursor is currently over.
dwKeyState
Contains the state of the modifier keys. This is a combination of any number of the following: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON, and MK_RBUTTON.
point
Contains the location of the cursor, in pixels, relative to the screen.
Return Value
The effect that would result if a drop were attempted at the location specified by point. It can be one or more of the following:
DROPEFFECT_NONE A drop would not be allowed.
DROPEFFECT_COPY A copy operation would be performed.
DROPEFFECT_MOVE A move operation would be performed.
DROPEFFECT_LINK A link from the dropped data to the original data would be established.
DROPEFFECT_SCROLL Indicates that a drag scroll operation is about to occur or is occurring in the target.
Remarks
Override this function when you want to provide special behavior for this event. The default implementation of this function calls CView::OnDragScroll, which returns DROPEFFECT_NONE and scrolls the window when the cursor is dragged into the default scroll region inside the border of the window.
COleDropTarget::OnDrop
Called by the framework when a drop operation is to occur.
virtual BOOL OnDrop(
CWnd* pWnd,
COleDataObject* pDataObject,
DROPEFFECT dropEffect,
CPoint point);
Parameters
pWnd
Points to the window the cursor is currently over.
pDataObject
Points to the data object that contains the data to be dropped.
dropEffect
The effect that the user chose for the drop operation. It can be one or more of the following:
DROPEFFECT_COPY A copy operation would be performed.
DROPEFFECT_MOVE A move operation would be performed.
DROPEFFECT_LINK A link from the dropped data to the original data would be established.
point
Contains the location of the cursor, in pixels, relative to the screen.
Return Value
Nonzero if the drop is successful; otherwise 0.
Remarks
The framework first calls OnDropEx. If the OnDropEx
function does not handle the drop, the framework then calls this member function, OnDrop
. Typically, the application overrides OnDropEx in the view class to handle right mouse-button drag and drop. Typically, the view class OnDrop is used to handle simple drag and drop.
The default implementation of COleDropTarget::OnDrop
calls CView::OnDrop, which simply returns FALSE by default.
For more information, see IDropTarget::Drop in the Windows SDK.
COleDropTarget::OnDropEx
Called by the framework when a drop operation is to occur.
virtual DROPEFFECT OnDropEx(
CWnd* pWnd,
COleDataObject* pDataObject,
DROPEFFECT dropDefault,
DROPEFFECT dropList,
CPoint point);
Parameters
pWnd
Points to the window the cursor is currently over.
pDataObject
Points to the data object that contains the data to be dropped.
dropDefault
The effect that the user chose for the default drop operation based on the current key state. It can be DROPEFFECT_NONE. Drop effects are discussed in the Remarks section.
dropList
A list of the drop effects that the drop source supports. Drop effect values can be combined using the bitwise OR (|
) operation. Drop effects are discussed in the Remarks section.
point
Contains the location of the cursor, in pixels, relative to the screen.
Return Value
The drop effect that resulted from the drop attempt at the location specified by point. Drop effects are discussed in the Remarks section.
Remarks
The framework first calls this function. If it does not handle the drop, the framework then calls OnDrop. Typically, you will override OnDropEx in the view class to support right mouse-button drag and drop. Typically, the view class OnDrop is used to handle the case of support for simple drag and drop.
The default implementation of COleDropTarget::OnDropEx
calls CView::OnDropEx. By default, CView::OnDropEx simply returns a dummy value to indicate the OnDrop member function should be called.
Drop effects describe the action associated with a drop operation. See the following list of drop effects:
DROPEFFECT_NONE A drop would not be allowed.
DROPEFFECT_COPY A copy operation would be performed.
DROPEFFECT_MOVE A move operation would be performed.
DROPEFFECT_LINK A link from the dropped data to the original data would be established.
DROPEFFECT_SCROLL Indicates that a drag scroll operation is about to occur or is occurring in the target.
For more information, see IDropTarget::Drop in the Windows SDK.
COleDropTarget::Register
Call this function to register your window with the OLE DLLs as a valid drop target.
BOOL Register(CWnd* pWnd);
Parameters
pWnd
Points to the window that is to be registered as a drop target.
Return Value
Nonzero if registration is successful; otherwise 0.
Remarks
This function must be called for drop operations to be accepted.
For more information, see RegisterDragDrop in the Windows SDK.
COleDropTarget::Revoke
Call this function before destroying any window that has been registered as a drop target through a call to Register to remove it from the list of drop targets.
virtual void Revoke();
Remarks
This function is called automatically from the OnDestroy handler for the window that was registered, so it is usually not necessary to call this function explicitly.
For more information, see RevokeDragDrop in the Windows SDK.
See also
MFC Sample HIERSVR
MFC Sample OCLIENT
CCmdTarget Class
Hierarchy Chart
COleDropSource Class