uidragdropctrl.h
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:5k
- //*******************************************************************************
- // 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_)