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

对话框与窗口

开发平台:

Visual C++

  1. // XTDropSource.h : header 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. //{{AFX_CODEJOCK_PRIVATE
  21. #ifndef __XTDROPSOURCE_H__
  22. #define __XTDROPSOURCE_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. // -------------------------------------------------------------------------
  28. // Summary:
  29. //     CXTDropSource class is derived from IDropSource. It is used
  30. //     by the shell list control to provide drag-and-drop operations in
  31. //     your application.
  32. //
  33. // Remarks:
  34. //     CXTDropSource contains methods used in any application used as a data source
  35. //     in a drag-and-drop operation. The data source application in a
  36. //     drag-and-drop operation is responsible for:
  37. //
  38. //     * Determining the data being dragged based on the user's
  39. //           selection.
  40. //     * Initiating the drag-and-drop operation based on the user's
  41. //           mouse actions.
  42. //     * Generating some of the visual feedback during the
  43. //           drag-and-drop operation, such as setting the cursor and
  44. //           highlighting the data selected for the drag-and-drop operation.
  45. //     * Canceling or completing the drag-and-drop operation based on
  46. //           the user's mouse actions.
  47. //     * Performing any action on the original data caused by the
  48. //           drop operation, such as deleting the data on a drag move.
  49. //
  50. //     CXTDropSource contains the methods for generating visual
  51. //     feedback to the end user and for canceling or completing the
  52. //     drag-and-drop operation. You also need to call the DoDragDrop,
  53. //     RegisterDragDrop, and RevokeDragDrop functions in drag-and-drop
  54. //     operations.
  55. // -------------------------------------------------------------------------
  56. class _XTP_EXT_CLASS CXTDropSource : public IDropSource
  57. {
  58. public:
  59. //-----------------------------------------------------------------------
  60. // Summary:
  61. //     Constructs a CXTDropSource object
  62. //-----------------------------------------------------------------------
  63. CXTDropSource();
  64. //-----------------------------------------------------------------------
  65. // Summary:
  66. //     Destroys a CXTDropSource object, handles clean up and deallocation
  67. //-----------------------------------------------------------------------
  68. ~CXTDropSource();
  69. public:
  70. //////////////////////////////////////////////////////////////////////
  71. // IUnknown Interface Members
  72. //////////////////////////////////////////////////////////////////////
  73. // ------------------------------------------------------------------------------
  74. // Summary:
  75. //     Provides client access to other interfaces.
  76. // Remarks:
  77. //     The QueryInterface method gives a client access to other
  78. //     interfaces on an object. For any one object, a specific query for
  79. //     the IUnknown interface on any of the object's interfaces must
  80. //     always return the same pointer value. This allows a client to
  81. //     determine whether two pointers point to the same component by
  82. //     calling QueryInterface on both and comparing the results. It is
  83. //     specifically not the case that queries for interfaces (even the
  84. //     same interface through the same pointer) must return the same
  85. //     pointer value.
  86. // Parameters:
  87. //     riid -      Identifier of the interface being requested.
  88. // ppReturn -  Address of the pointer variable that receives the interface
  89. //                 pointer requested in 'riid'. Upon successful return,
  90. //                 'ppReturn' contains the requested interface pointer to the
  91. //                 object. If the object does not support the interface specified
  92. //                 in 'riid', 'ppReturn' is set to NULL.
  93. // Returns:
  94. //     A pointer to an interface if successful, otherwise returns NULL.
  95. // ------------------------------------------------------------------------------
  96. STDMETHODIMP QueryInterface(REFIID riid, LPVOID* ppReturn);
  97. //{{AFX_CODEJOCK_PRIVATE
  98. // ---------------------------------------------------------------------------
  99. // Summary:
  100. //     Increments the reference counter.
  101. // Remarks:
  102. //     The AddRef method increments the reference count for an interface
  103. //     on an object. It should be called for every new copy of a pointer
  104. //     to an interface on a given object.
  105. // Returns:
  106. //     A ULONG value that represents the new reference count. The return value
  107. //     can be an integer from 1 to n, the value of the new reference count.
  108. //     This information is meant to be used for diagnostic and testing
  109. //     purposes only because, in certain situations, the value may be
  110. //     unstable.
  111. // ---------------------------------------------------------------------------
  112. STDMETHODIMP_(ULONG) AddRef();
  113. // ----------------------------------------------------------------------
  114. // Summary:
  115. //     Decrements the reference counter.
  116. // Remarks:
  117. //     This method decrements the reference count for the calling
  118. //     interface on a object. If the reference count on the object falls
  119. //     to 0, the object is freed from memory.
  120. // Returns:
  121. //     A ULONG value that represents the resulting value of the reference
  122. //     count, which is used for diagnostic and testing purposes only.
  123. // ----------------------------------------------------------------------
  124. STDMETHODIMP_(ULONG) Release();
  125. //}}AFX_CODEJOCK_PRIVATE
  126. //////////////////////////////////////////////////////////////////////
  127. // IDropSource Interface Members
  128. //////////////////////////////////////////////////////////////////////
  129. // ---------------------------------------------------------------------------------
  130. // Summary:
  131. //     Determines if drag-and-drop should continue, stop or signal
  132. //     complete.
  133. // Parameters:
  134. //     bEsc -        Specifies whether the ESC key has been pressed since the
  135. //                   previous call to QueryContinueDrag, or to DoDragDrop if this is
  136. //                   the first call to QueryContinueDrag. A TRUE value indicates
  137. //                   that the end user has pressed the escape key. A FALSE value
  138. //                   indicates it has not been pressed.
  139. // dwKeyState -  Current state of the keyboard modifier keys on the keyboard.
  140. //                   Valid values can be a combination of any of the flags
  141. //                   MK_CONTROL, MK_SHIFT, MK_ALT, MK_BUTTON, MK_LBUTTON,
  142. //                   MK_MBUTTON, and MK_RBUTTON.
  143. // Remarks:
  144. //     This method determines whether a drag-and-drop operation should be
  145. //     continued, canceled, or completed. You do not call this method
  146. //     directly. The OLE DoDragDrop function calls this method during a
  147. //     drag-and-drop operation. This method supports the standard return
  148. //     values E_UNEXPECTED and E_OUTOFMEMORY, as well as the following:
  149. //
  150. //     * <b>S_OK</b> Drag operation should continue. This result
  151. //           occurs if no errors are detected, the mouse button starting the
  152. //           drag-and-drop operation has not been released, and the ESC key has
  153. //           not been detected.
  154. //     * <b>DRAGDROP_S_DROP</b> Drop operation should occur
  155. //           completing the drag operation. This result occurs if DWORD
  156. //           indicates that the key that started the drag-and-drop operation
  157. //           has been released.
  158. //     * <b>DRAGDROP_S_CANCEL</b> Drag operation should be canceled
  159. //           with no drop operation occurring. This result occurs if BOOL is
  160. //           TRUE, indicating the ESC key has been pressed.
  161. // Returns:
  162. //     An HRESULT value.
  163. // ---------------------------------------------------------------------------------
  164. STDMETHODIMP QueryContinueDrag(BOOL bEsc, DWORD dwKeyState);
  165. // ---------------------------------------------------------------------
  166. // Summary:
  167. //     Provides visual feedback during drag-and-drop operations.
  168. // Parameters:
  169. //     dwEffect -  Effect of a drop operation.
  170. // Remarks:
  171. //     This method enables a source application to give visual feedback
  172. //     to the end user during a drag-and-drop operation by providing the
  173. //     DoDragDrop function with an enumeration value specifying the
  174. //     visual effect. This method supports the standard return values
  175. //     E_INVALIDARG, E_UNEXPECTED, and E_OUTOFMEMORY, as well as the
  176. //     following:
  177. //
  178. //     * <b>S_OK</b> Method completed its task successfully, using
  179. //           the cursor set by the source application.
  180. //     * <b>DRAGDROP_S_USEDEFAULTCURSORS</b> Successful completion of
  181. //           the method, and requests OLE to update the cursor using the
  182. //           OLE-provided default cursors.
  183. // Returns:
  184. //     An HRESULT value.
  185. // ---------------------------------------------------------------------
  186. STDMETHODIMP GiveFeedback(DWORD dwEffect);
  187. protected:
  188. UINT m_uiRefCount; // Indicates the current reference count.
  189. };
  190. #endif // __XTDROPSOURCE_H__