/** * @file XTPDropSource.cpp * * @copyright * (c) 1998-2025 Codejock Software, All Rights Reserved. * * This source file is the property of Codejock Software and must not be * redistributed by any means without the explicit written permission of * Codejock Software. * * The use of this source code is governed by the terms and conditions specified * in the Toolkit Pro license agreement. Codejock Software grants you, as a * single software developer, the limited right to use this software on one * computer only. * * Contact Information: * support@codejock.com * http://www.codejock.com * */ #include "stdafx.h" #include "Controls/Shell/XTPDropSource.h" #include "Common/Base/Diagnostic/XTPDisableNoisyWarnings.h" #ifdef _DEBUG # define new DEBUG_NEW # undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CXTPDropSource CXTPDropSource::CXTPDropSource() { m_uiRefCount = 1; } CXTPDropSource::~CXTPDropSource() { } ///////////////////////////////////////////////////////////////////////////// // IUnknown Methods STDMETHODIMP CXTPDropSource::QueryInterface(REFIID riid, LPVOID* ppReturn) { *ppReturn = NULL; // IUnknown if (IsEqualIID(riid, IID_IUnknown)) { *ppReturn = this; } // IDropTarget else if (IsEqualIID(riid, IID_IDropSource)) { *ppReturn = (IDropSource*)this; } if (*ppReturn) { (*(LPUNKNOWN*)ppReturn)->AddRef(); return S_OK; } return E_NOINTERFACE; } STDMETHODIMP_(ULONG) CXTPDropSource::AddRef() { return ++m_uiRefCount; } STDMETHODIMP_(ULONG) CXTPDropSource::Release() { if (--m_uiRefCount == 0) { delete this; return 0; } return m_uiRefCount; } ///////////////////////////////////////////////////////////////////////////// // IDropSource Methods STDMETHODIMP CXTPDropSource::QueryContinueDrag(BOOL bEsc, DWORD dwKeyState) { if (bEsc) { return DRAGDROP_S_CANCEL; } if ((dwKeyState & MK_LBUTTON) == 0x0000) { return DRAGDROP_S_DROP; } return S_OK; } STDMETHODIMP CXTPDropSource::GiveFeedback(DWORD) { return DRAGDROP_S_USEDEFAULTCURSORS; }