You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
204 lines
9.3 KiB
C
204 lines
9.3 KiB
C
2 years ago
|
// XTPDropSource.h : header file
|
||
|
//
|
||
|
// This file is a part of the XTREME CONTROLS MFC class library.
|
||
|
// (c)1998-2012 Codejock Software, All Rights Reserved.
|
||
|
//
|
||
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
||
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
||
|
// CONSENT OF CODEJOCK SOFTWARE.
|
||
|
//
|
||
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
||
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
||
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
||
|
// SINGLE COMPUTER.
|
||
|
//
|
||
|
// CONTACT INFORMATION:
|
||
|
// support@codejock.com
|
||
|
// http://www.codejock.com
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
#if !defined(__XTPDROPSOURCE_H__)
|
||
|
#define __XTPDROPSOURCE_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
// -------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTPDropSource class is derived from IDropSource. It is used
|
||
|
// by the shell list control to provide drag-and-drop operations in
|
||
|
// your application.
|
||
|
//
|
||
|
// Remarks:
|
||
|
// CXTPDropSource contains methods used in any application used as a data source
|
||
|
// in a drag-and-drop operation. The data source application in a
|
||
|
// drag-and-drop operation is responsible for:
|
||
|
//
|
||
|
// * Determining the data being dragged based on the user's
|
||
|
// selection.
|
||
|
// * Initiating the drag-and-drop operation based on the user's
|
||
|
// mouse actions.
|
||
|
// * Generating some of the visual feedback during the
|
||
|
// drag-and-drop operation, such as setting the cursor and
|
||
|
// highlighting the data selected for the drag-and-drop operation.
|
||
|
// * Canceling or completing the drag-and-drop operation based on
|
||
|
// the user's mouse actions.
|
||
|
// * Performing any action on the original data caused by the
|
||
|
// drop operation, such as deleting the data on a drag move.
|
||
|
//
|
||
|
// CXTPDropSource contains the methods for generating visual
|
||
|
// feedback to the end user and for canceling or completing the
|
||
|
// drag-and-drop operation. You also need to call the DoDragDrop,
|
||
|
// RegisterDragDrop, and RevokeDragDrop functions in drag-and-drop
|
||
|
// operations.
|
||
|
// -------------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPDropSource : public IDropSource
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPDropSource object
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPDropSource();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys a CXTPDropSource object, handles clean up and deallocation
|
||
|
//-----------------------------------------------------------------------
|
||
|
~CXTPDropSource();
|
||
|
|
||
|
public:
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// IUnknown Interface Members
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// ------------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Provides client access to other interfaces.
|
||
|
// Remarks:
|
||
|
// The QueryInterface method gives a client access to other
|
||
|
// interfaces on an object. For any one object, a specific query for
|
||
|
// the IUnknown interface on any of the object's interfaces must
|
||
|
// always return the same pointer value. This allows a client to
|
||
|
// determine whether two pointers point to the same component by
|
||
|
// calling QueryInterface on both and comparing the results. It is
|
||
|
// specifically not the case that queries for interfaces (even the
|
||
|
// same interface through the same pointer) must return the same
|
||
|
// pointer value.
|
||
|
// Parameters:
|
||
|
// riid - Identifier of the interface being requested.
|
||
|
// ppReturn - Address of the pointer variable that receives the interface
|
||
|
// pointer requested in 'riid'. Upon successful return,
|
||
|
// 'ppReturn' contains the requested interface pointer to the
|
||
|
// object. If the object does not support the interface specified
|
||
|
// in 'riid', 'ppReturn' is set to NULL.
|
||
|
// Returns:
|
||
|
// A pointer to an interface if successful, otherwise returns NULL.
|
||
|
// ------------------------------------------------------------------------------
|
||
|
STDMETHODIMP QueryInterface(REFIID riid, LPVOID* ppReturn);
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
// ---------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Increments the reference counter.
|
||
|
// Remarks:
|
||
|
// The AddRef method increments the reference count for an interface
|
||
|
// \on an object. It should be called for every new copy of a pointer
|
||
|
// to an interface on a given object.
|
||
|
// Returns:
|
||
|
// A ULONG value that represents the new reference count. The return value
|
||
|
// can be an integer from 1 to n, the value of the new reference count.
|
||
|
// This information is meant to be used for diagnostic and testing
|
||
|
// purposes only because, in certain situations, the value may be
|
||
|
// unstable.
|
||
|
// ---------------------------------------------------------------------------
|
||
|
STDMETHODIMP_(ULONG) AddRef();
|
||
|
|
||
|
// ----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Decrements the reference counter.
|
||
|
// Remarks:
|
||
|
// This method decrements the reference count for the calling
|
||
|
// interface on a object. If the reference count on the object falls
|
||
|
// to 0, the object is freed from memory.
|
||
|
// Returns:
|
||
|
// A ULONG value that represents the resulting value of the reference
|
||
|
// count, which is used for diagnostic and testing purposes only.
|
||
|
// ----------------------------------------------------------------------
|
||
|
STDMETHODIMP_(ULONG) Release();
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// IDropSource Interface Members
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// ---------------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Determines if drag-and-drop should continue, stop or signal
|
||
|
// complete.
|
||
|
// Parameters:
|
||
|
// bEsc - Specifies whether the ESC key has been pressed since the
|
||
|
// previous call to QueryContinueDrag, or to DoDragDrop if this is
|
||
|
// the first call to QueryContinueDrag. A TRUE value indicates
|
||
|
// that the end user has pressed the escape key. A FALSE value
|
||
|
// indicates it has not been pressed.
|
||
|
// dwKeyState - Current state of the keyboard modifier keys on the keyboard.
|
||
|
// Valid values can be a combination of any of the flags
|
||
|
// MK_CONTROL, MK_SHIFT, MK_ALT, MK_BUTTON, MK_LBUTTON,
|
||
|
// MK_MBUTTON, and MK_RBUTTON.
|
||
|
// Remarks:
|
||
|
// This method determines whether a drag-and-drop operation should be
|
||
|
// continued, canceled, or completed. You do not call this method
|
||
|
// directly. The OLE DoDragDrop function calls this method during a
|
||
|
// drag-and-drop operation. This method supports the standard return
|
||
|
// values E_UNEXPECTED and E_OUTOFMEMORY, as well as the following:
|
||
|
//
|
||
|
// * <b>S_OK</b> Drag operation should continue. This result
|
||
|
// \occurs if no errors are detected, the mouse button starting the
|
||
|
// drag-and-drop operation has not been released, and the ESC key has
|
||
|
// not been detected.
|
||
|
// * <b>DRAGDROP_S_DROP</b> Drop operation should occur
|
||
|
// completing the drag operation. This result occurs if DWORD
|
||
|
// indicates that the key that started the drag-and-drop operation
|
||
|
// has been released.
|
||
|
// * <b>DRAGDROP_S_CANCEL</b> Drag operation should be canceled
|
||
|
// with no drop operation occurring. This result occurs if BOOL is
|
||
|
// TRUE, indicating the ESC key has been pressed.
|
||
|
// Returns:
|
||
|
// An HRESULT value.
|
||
|
// ---------------------------------------------------------------------------------
|
||
|
STDMETHODIMP QueryContinueDrag(BOOL bEsc, DWORD dwKeyState);
|
||
|
|
||
|
// ---------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Provides visual feedback during drag-and-drop operations.
|
||
|
// Parameters:
|
||
|
// dwEffect - Effect of a drop operation.
|
||
|
// Remarks:
|
||
|
// This method enables a source application to give visual feedback
|
||
|
// to the end user during a drag-and-drop operation by providing the
|
||
|
// DoDragDrop function with an enumeration value specifying the
|
||
|
// visual effect. This method supports the standard return values
|
||
|
// E_INVALIDARG, E_UNEXPECTED, and E_OUTOFMEMORY, as well as the
|
||
|
// following:
|
||
|
//
|
||
|
// * <b>S_OK</b> Method completed its task successfully, using
|
||
|
// the cursor set by the source application.
|
||
|
// * <b>DRAGDROP_S_USEDEFAULTCURSORS</b> Successful completion of
|
||
|
// the method, and requests OLE to update the cursor using the
|
||
|
// OLE-provided default cursors.
|
||
|
// Returns:
|
||
|
// An HRESULT value.
|
||
|
// ---------------------------------------------------------------------
|
||
|
STDMETHODIMP GiveFeedback(DWORD dwEffect);
|
||
|
|
||
|
protected:
|
||
|
UINT m_uiRefCount; // Indicates the current reference count.
|
||
|
};
|
||
|
|
||
|
#endif // __XTPDROPSOURCE_H__
|