UIDragDropTree.h
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:5k
源码类别:

图形图象

开发平台:

Visual C++

  1. //*******************************************************************************
  2. // COPYRIGHT NOTES
  3. // ---------------
  4. // You may use this source code, compile or redistribute it as part of your application 
  5. // for free. You cannot redistribute it as a part of a software development 
  6. // library without the agreement of the author. If the sources are 
  7. // distributed along with the application, you should leave the original 
  8. // copyright notes in the source code without any changes.
  9. // This code can be used WITHOUT ANY WARRANTIES at your own risk.
  10. // 
  11. // For the latest updates to this code, check this site:
  12. // http://www.masmex.com 
  13. // after Sept 2000
  14. // 
  15. // Copyright(C) 2000 Philip Oldaker <email: philip@masmex.com>
  16. //*******************************************************************************
  17. #if !defined(AFX_DRAGDROPTREE_H__072E5B93_FD2A_11D0_ADBE_0000E81B9EF1__INCLUDED_)
  18. #define AFX_DRAGDROPTREE_H__072E5B93_FD2A_11D0_ADBE_0000E81B9EF1__INCLUDED_
  19. #if _MSC_VER >= 1000
  20. #pragma once
  21. #endif // _MSC_VER >= 1000
  22. // DragDropTree.h : header file
  23. //
  24. #include "UIImageDropTarget.h"
  25. // ///////////////////////////////////////////////////////////////////////////
  26. class CUI_TreeDropTarget : public CUI_ImageDropTarget
  27. {
  28. public:
  29. virtual DROPEFFECT OnDragEnter( CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point );
  30. virtual DROPEFFECT OnDragOver( CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point );
  31. virtual BOOL OnDrop( CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point );
  32. virtual void OnDragLeave( CWnd* pWnd);
  33. protected:
  34. DWORD m_dwKeyboardState;
  35. DWORD m_dwEnterKeyboardState;
  36. };
  37. /////////////////////////////////////////////////////////////////////////////
  38. // CUIDragDropTree window
  39. class CTRL_EXT_CLASS CUIDragDropTree : public CTreeCtrl
  40. {
  41. friend class CUI_TreeDropTarget;
  42. // Construction
  43. public:
  44. DECLARE_DYNAMIC(CUIDragDropTree)
  45. CUIDragDropTree(bool bDragDrop=true);
  46. // Attributes
  47. public:
  48. enum CopyMode
  49. {
  50. eDDNull,
  51. eDDMove,
  52. eDDCopy,
  53. eDDCancel
  54. };
  55. enum SCROLLMODE
  56.   {
  57. SCROLL_UP_SLOW,
  58. SCROLL_DOWN_SLOW,
  59. SCROLL_UP_NORMAL,
  60. SCROLL_DOWN_NORMAL
  61.   };
  62. const COleDropTarget &GetDropTarget();
  63. // Operations
  64. public:
  65. void RegisterDropTarget();
  66. void SetDragTimer();
  67. void KillDragTimer();
  68. virtual DROPEFFECT SelectCurrentTarget(CDD_OleDropTargetInfo *pInfo);
  69. // Overrides
  70. // ClassWizard generated virtual function overrides
  71. //{{AFX_VIRTUAL(CUIDragDropTree)
  72. protected:
  73. //}}AFX_VIRTUAL
  74. // Implementation
  75. public:
  76. virtual ~CUIDragDropTree();
  77. protected:
  78. HTREEITEM GetDragItem();
  79. HTREEITEM GetDropItem();
  80. virtual BOOL IsChildNodeOf(HTREEITEM hitemChild, HTREEITEM hitemSuspectedParent);
  81. virtual BOOL NeedToScroll( CPoint ptMouse );
  82. virtual SCROLLMODE RefineScrollMode( CPoint ptMouse );
  83. virtual BOOL TransferItem(HTREEITEM hitem, HTREEITEM hNewParent);
  84. virtual void OnButtonUp(bool bMove);
  85. virtual void OnDropFile(HTREEITEM hItem,LPCTSTR pszFile,UINT nFlags);
  86. virtual void NewTransferItem(HTREEITEM hNewItem);
  87. virtual BOOL StartDragDrop(NM_TREEVIEW* pNMTreeView);
  88. virtual bool GetRDragMenu(CMenu *pMenu);
  89. virtual void EndDragging();
  90. virtual void OnDDCopy();
  91. virtual void OnDDMove();
  92. virtual void OnDDCancel();
  93. // Generated message map functions
  94. protected:
  95. //{{AFX_MSG(CUIDragDropTree)
  96. afx_msg BOOL OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult);
  97. afx_msg BOOL OnBeginRDrag(NMHDR* pNMHDR, LRESULT* pResult);
  98. afx_msg void OnTimer(UINT nIDEvent);
  99. afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
  100. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  101. afx_msg void OnDestroy();
  102. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  103. afx_msg void OnDropFiles( HDROP hDropInfo);
  104. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  105. //}}AFX_MSG
  106. DECLARE_MESSAGE_MAP()
  107. private:
  108. bool m_bDragDrop;
  109. bool m_bDropFiles;
  110. CImageList* m_pImageList;
  111. BOOL m_bDragging;
  112. HTREEITEM m_hitemDrag;
  113. HTREEITEM m_hitemDrop;
  114. UINT m_nTimerID;
  115. int m_nSlowScrollTimeout;
  116. int m_nUpperYCoor;
  117. int m_nLowerYCoor;
  118. int m_nScrollBarSize;
  119. CUI_TreeDropTarget m_OleDropTarget;
  120. COleDataSource m_OleDataSource;
  121. protected:
  122. CopyMode m_CopyMode;
  123. public:
  124. void SetDragDrop(bool bDragDrop);
  125. bool GetDragDrop();
  126. void SetDropFiles(bool bDropFiles);
  127. bool GetDropFiles();
  128. };
  129. inline void CUIDragDropTree::SetDragDrop(bool bDragDrop)
  130. {
  131. m_bDragDrop = bDragDrop;
  132. }
  133. inline bool CUIDragDropTree::GetDragDrop()
  134. {
  135. return m_bDragDrop;
  136. }
  137. inline void CUIDragDropTree::SetDropFiles(bool bDropFiles)
  138. {
  139. m_bDropFiles = bDropFiles;
  140. }
  141. inline bool CUIDragDropTree::GetDropFiles()
  142. {
  143. return m_bDropFiles;
  144. }
  145. inline const COleDropTarget &CUIDragDropTree::GetDropTarget()
  146. {
  147. return m_OleDropTarget;
  148. }
  149. inline HTREEITEM CUIDragDropTree::GetDragItem()
  150. {
  151. return m_hitemDrag;
  152. }
  153. inline HTREEITEM CUIDragDropTree::GetDropItem()
  154. {
  155. return m_hitemDrop;
  156. }
  157. /////////////////////////////////////////////////////////////////////////////
  158. //{{AFX_INSERT_LOCATION}}
  159. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  160. #endif // !defined(AFX_DRAGDROPTREE_H__072E5B93_FD2A_11D0_ADBE_0000E81B9EF1__INCLUDED_)