XTDropSource.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:2k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTDropSource.cpp : implementation file
  2. //
  3. // This file is a part of the XTREME CONTROLS MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "XTDropSource.h"
  22. #ifdef _DEBUG
  23. #define new DEBUG_NEW
  24. #undef THIS_FILE
  25. static char THIS_FILE[] = __FILE__;
  26. #endif
  27. /////////////////////////////////////////////////////////////////////////////
  28. // CXTDropSource
  29. CXTDropSource::CXTDropSource()
  30. {
  31. m_uiRefCount = 1;
  32. }
  33. CXTDropSource::~CXTDropSource()
  34. {
  35. }
  36. /////////////////////////////////////////////////////////////////////////////
  37. // IUnknown Methods
  38. STDMETHODIMP CXTDropSource::QueryInterface(REFIID riid, LPVOID* ppReturn)
  39. {
  40. *ppReturn = NULL;
  41. //IUnknown
  42. if (IsEqualIID(riid, IID_IUnknown))
  43. {
  44. *ppReturn = this;
  45. }
  46. //IDropTarget
  47. else if (IsEqualIID(riid, IID_IDropSource))
  48. {
  49. *ppReturn = (IDropSource*)this;
  50. }
  51. if (*ppReturn)
  52. {
  53. (*(LPUNKNOWN*)ppReturn)->AddRef();
  54. return S_OK;
  55. }
  56. return E_NOINTERFACE;
  57. }
  58. STDMETHODIMP_(ULONG) CXTDropSource::AddRef()
  59. {
  60. return ++m_uiRefCount;
  61. }
  62. STDMETHODIMP_(ULONG) CXTDropSource::Release()
  63. {
  64. if (--m_uiRefCount == 0)
  65. {
  66. delete this;
  67. return 0;
  68. }
  69. return m_uiRefCount;
  70. }
  71. /////////////////////////////////////////////////////////////////////////////
  72. // IDropSource Methods
  73. STDMETHODIMP CXTDropSource::QueryContinueDrag(BOOL bEsc, DWORD dwKeyState)
  74. {
  75. if (bEsc)
  76. {
  77. return DRAGDROP_S_CANCEL;
  78. }
  79. if ((dwKeyState & MK_LBUTTON) == 0x0000)
  80. {
  81. return DRAGDROP_S_DROP;
  82. }
  83. return S_OK;
  84. }
  85. STDMETHODIMP CXTDropSource::GiveFeedback(DWORD)
  86. {
  87. return DRAGDROP_S_USEDEFAULTCURSORS;
  88. }