This commit was manufactured by cvs2svn to create branch 'captive'.
[reactos.git] / subsys / system / explorer / Seashell / SeaShellExt / Include / uidragdropctrl.h
diff --git a/subsys/system/explorer/Seashell/SeaShellExt/Include/uidragdropctrl.h b/subsys/system/explorer/Seashell/SeaShellExt/Include/uidragdropctrl.h
new file mode 100644 (file)
index 0000000..0acf676
--- /dev/null
@@ -0,0 +1,189 @@
+//*******************************************************************************
+// COPYRIGHT NOTES
+// ---------------
+// You may use this source code, compile or redistribute it as part of your application 
+// for free. You cannot redistribute it as a part of a software development 
+// library without the agreement of the author. If the sources are 
+// distributed along with the application, you should leave the original 
+// copyright notes in the source code without any changes.
+// This code can be used WITHOUT ANY WARRANTIES at your own risk.
+// 
+// For the latest updates to this code, check this site:
+// http://www.masmex.com 
+// after Sept 2000
+// 
+// Copyright(C) 2000 Philip Oldaker <email: philip@masmex.com>
+//*******************************************************************************
+
+#if !defined(AFX_DRAGDROPCTRL_H__BC21D3A2_332C_11D1_ADE9_0000E81B9EF1__INCLUDED_)
+#define AFX_DRAGDROPCTRL_H__BC21D3A2_332C_11D1_ADE9_0000E81B9EF1__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+// DragDropCtrl.h : header file
+//
+class CDD_OleDropTargetInfo : public CObject
+{
+       DECLARE_DYNAMIC(CDD_OleDropTargetInfo)
+public:
+       CDD_OleDropTargetInfo(HWND hWnd,CPoint &point,COleDataObject *pDataObject);
+       CDD_OleDropTargetInfo(HWND hWnd);
+// Operations
+       void SetItem(HTREEITEM hItem);
+       void SetItem(int nItem);
+       void SetDropEffect(DROPEFFECT dropEffect);
+       void SetKeyboardState(DWORD dwKeyboardState);
+// Attributes
+       HWND GetSafeHwnd() const;
+       CPoint GetPoint() const;
+       DWORD GetKeyboardState() const;
+       const COleDataObject *GetDataObject() const;
+       COleDataObject *GetDataObject();
+       HTREEITEM GetTreeItem() const;
+       int GetListItem() const;
+       DROPEFFECT GetDropEffect() const;
+protected:
+       void InitInfo(HWND hWnd,
+                                       const CPoint *pPoint=NULL,
+                                       COleDataObject *pDataObject=NULL,
+                                       DROPEFFECT dropeEffect=DROPEFFECT_NONE,
+                                       DWORD dwKeyState=0,
+                                       HTREEITEM hItem=NULL,
+                                       int iItem=-1);
+private:
+       HWND m_hWnd; // window mouse currently over
+       CPoint m_point; // mouse position in client coordinates
+       DROPEFFECT m_dropEffect; // The type of drop anticipated
+       COleDataObject *m_pDataObject; // The OLE data that was cached at startup
+       DWORD m_dwKeyState; // keyboard state when message was received
+       HTREEITEM m_hDropItem; // tree item the mouse is over or currently selected (NULL if source not a tree control)
+       int m_nDropItem; // list control item the mouse is over (-1 if source not a list control)
+};
+
+inline CDD_OleDropTargetInfo::CDD_OleDropTargetInfo(HWND hWnd,CPoint &point,COleDataObject *pDataObject)
+{
+       InitInfo(hWnd,&point,pDataObject);
+}
+
+inline CDD_OleDropTargetInfo::CDD_OleDropTargetInfo(HWND hWnd)
+{
+       InitInfo(hWnd);
+}
+
+inline void CDD_OleDropTargetInfo::InitInfo(HWND hWnd,
+                                                                                       const CPoint *pPoint,
+                                                                                       COleDataObject *pDataObject,
+                                                                                       DROPEFFECT dropEffect,
+                                                                                       DWORD dwKeyState,
+                                                                                       HTREEITEM hItem,
+                                                                                       int iItem)
+{
+       m_hWnd = hWnd;
+       if (pPoint)
+               m_point = *pPoint;
+       else
+               m_point = CPoint();
+       m_pDataObject = pDataObject;
+       m_dropEffect = dropEffect;
+       m_dwKeyState = dwKeyState;
+       m_hDropItem = hItem;
+       m_nDropItem = iItem;
+}
+
+inline void CDD_OleDropTargetInfo::SetItem(int nItem)
+{
+       m_nDropItem = nItem;
+}
+
+inline void CDD_OleDropTargetInfo::SetItem(HTREEITEM hItem)
+{
+       m_hDropItem = hItem;
+}
+
+inline void CDD_OleDropTargetInfo::SetDropEffect(DROPEFFECT dropEffect)
+{
+       m_dropEffect = dropEffect;
+}
+
+inline void CDD_OleDropTargetInfo::SetKeyboardState(DWORD dwKeyboardState)
+{
+       m_dwKeyState = dwKeyboardState;
+}
+
+inline DROPEFFECT CDD_OleDropTargetInfo::GetDropEffect() const
+{
+       return m_dropEffect;
+}
+
+inline HWND CDD_OleDropTargetInfo::GetSafeHwnd() const
+{
+       return m_hWnd;
+}
+
+inline CPoint CDD_OleDropTargetInfo::GetPoint() const
+{
+       return m_point;
+}
+
+inline DWORD CDD_OleDropTargetInfo::GetKeyboardState() const
+{
+       return m_dwKeyState;
+}
+
+inline const COleDataObject *CDD_OleDropTargetInfo::GetDataObject() const
+{
+       return m_pDataObject;
+}
+
+inline COleDataObject *CDD_OleDropTargetInfo::GetDataObject()
+{
+       return m_pDataObject;
+}
+
+inline HTREEITEM CDD_OleDropTargetInfo::GetTreeItem() const
+{
+       return m_hDropItem;
+}
+
+inline int CDD_OleDropTargetInfo::GetListItem() const
+{
+       return m_nDropItem;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// CDragDropCtrl window
+
+class CTRL_EXT_CLASS CDragDropCtrl : public COleDropTarget
+{
+// Construction
+public:
+       CDragDropCtrl();
+
+// Attributes
+public:
+
+// Operations
+public:
+
+// Overrides
+       virtual DROPEFFECT OnDragEnter( CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point );
+       virtual DROPEFFECT OnDragOver( CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point );
+       virtual BOOL OnDrop( CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point );
+       virtual void OnDragLeave( CWnd* pWnd);
+
+// Implementation
+public:
+       virtual ~CDragDropCtrl();
+
+private:
+       DWORD m_dwKeyboardState;
+       DWORD m_dwEnterKeyboardState;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_DRAGDROPCTRL_H__BC21D3A2_332C_11D1_ADE9_0000E81B9EF1__INCLUDED_)