GridDropTarget.cpp
上传用户:zhanglf88
上传日期:2013-11-19
资源大小:6036k
文件大小:4k
- // GridDropTarget.cpp : implementation file
- //
- // CGridDropTarget is an OLE drop target for CGridCtrl. All it does
- // is handle the drag and drop windows messages and pass them
- // directly onto the grid control.
- //
- // Written by Chris Maunder
- // mailto:chrismaunder@codeguru.com
- //
- // Copyright (c) 1998.
- #include "stdafx.h"
- #include "GridCtrl.h"
- #ifndef GRIDCONTROL_NO_DRAGDROP
- #include "GridDropTarget.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CGridDropTarget
- CGridDropTarget::CGridDropTarget()
- {
- m_pGridCtrl = NULL;
- m_bRegistered = FALSE;
- }
- CGridDropTarget::~CGridDropTarget()
- {
- }
- // Overloaded Register() function performs the normal COleDropTarget::Register
- // but also serves to connect this COleDropTarget with the parent grid control,
- // where all drop messages will ultimately be forwarded.
- BOOL CGridDropTarget::Register(CGridCtrl *pGridCtrl)
- {
- if (m_bRegistered) return FALSE;
- ASSERT(pGridCtrl->IsKindOf(RUNTIME_CLASS(CGridCtrl)));
- ASSERT(pGridCtrl);
- if (!pGridCtrl || !pGridCtrl->IsKindOf(RUNTIME_CLASS(CGridCtrl)))
- return FALSE;
- m_pGridCtrl = pGridCtrl;
- m_bRegistered = COleDropTarget::Register(pGridCtrl);
- return m_bRegistered;
- }
- void CGridDropTarget::Revoke()
- {
- m_bRegistered = FALSE;
- COleDropTarget::Revoke();
- }
- BEGIN_MESSAGE_MAP(CGridDropTarget, COleDropTarget)
- //{{AFX_MSG_MAP(CGridDropTarget)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CGridDropTarget message handlers
- DROPEFFECT CGridDropTarget::OnDragScroll(CWnd* pWnd, DWORD dwKeyState, CPoint /*point*/)
- {
- // TRACE("In CGridDropTarget::OnDragScrolln");
- if (pWnd->GetSafeHwnd() == m_pGridCtrl->GetSafeHwnd())
- {
- if (dwKeyState & MK_CONTROL)
- return DROPEFFECT_COPY;
- else
- return DROPEFFECT_MOVE;
- } else
- return DROPEFFECT_NONE;
- }
- DROPEFFECT CGridDropTarget::OnDragEnter(CWnd* pWnd, COleDataObject* pDataObject,
- DWORD dwKeyState, CPoint point)
- {
- TRACE(_T("In CGridDropTarget::OnDragEntern"));
- ASSERT(m_pGridCtrl);
- if (pWnd->GetSafeHwnd() == m_pGridCtrl->GetSafeHwnd())
- return m_pGridCtrl->OnDragEnter(pDataObject, dwKeyState, point);
- else
- return DROPEFFECT_NONE;
- }
- void CGridDropTarget::OnDragLeave(CWnd* pWnd)
- {
- TRACE(_T("In CGridDropTarget::OnDragLeaven"));
- ASSERT(m_pGridCtrl);
- if (pWnd->GetSafeHwnd() == m_pGridCtrl->GetSafeHwnd())
- m_pGridCtrl->OnDragLeave();
- }
- DROPEFFECT CGridDropTarget::OnDragOver(CWnd* pWnd, COleDataObject* pDataObject,
- DWORD dwKeyState, CPoint point)
- {
- // TRACE("In CGridDropTarget::OnDragOvern");
- ASSERT(m_pGridCtrl);
- if (pWnd->GetSafeHwnd() == m_pGridCtrl->GetSafeHwnd())
- return m_pGridCtrl->OnDragOver(pDataObject, dwKeyState, point);
- else
- return DROPEFFECT_NONE;
- }
- BOOL CGridDropTarget::OnDrop(CWnd* pWnd, COleDataObject* pDataObject,
- DROPEFFECT dropEffect, CPoint point)
- {
- TRACE(_T("In CGridDropTarget::OnDropn"));
- ASSERT(m_pGridCtrl);
- if (pWnd->GetSafeHwnd() == m_pGridCtrl->GetSafeHwnd())
- return m_pGridCtrl->OnDrop(pDataObject, dropEffect, point);
- else
- return FALSE;
- }
- #endif // GRIDCONTROL_NO_DRAGDROP