|
//------------------------------------------------------------------------------
// $Workfile: DataHandler.cpp $
// $Header: $
//
// Copyright � 2008 SbjCat
// All rights reserved.
//
//
// *** Authors ***
// Steve Johnson
//
// $Revision: $
//
//-----------------------------------------------------------------------------
#include "stdafx.h"
#include "DataHandler.h"
#include "DropTarget.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
namespace SbjCore
{
namespace DragNDrop
{
struct DataHandlerImpl
{
CLIPFORMAT theCF;
DataHandlerImpl(CLIPFORMAT cf) :
theCF(cf)
{
}
virtual ~DataHandlerImpl()
{
}
};
DataHandler::DataHandler(CLIPFORMAT cf /*= CF_TEXT*/, DropTarget* pDropTarget /*= NULL*/) :
m_pImpl(new DataHandlerImpl(cf))
{
if (pDropTarget != NULL)
{
pDropTarget->AddHandler(cf, this);
}
}
DataHandler::~DataHandler()
{
try
{
delete m_pImpl;
}
catch (...)
{
ASSERT(FALSE);
}
}
CLIPFORMAT DataHandler::GetCF()
{
return m_pImpl->theCF;
}
bool DataHandler::Handle(COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint pt)
{
return OnHandle(pDataObject, dropEffect, pt);
}
DROPEFFECT DataHandler::GetDropEffect(COleDataObject* pDataObject, DWORD dwKeyState, CPoint pt)
{
return OnGetDropEffect(pDataObject, dwKeyState, pt);
}
DROPEFFECT DataHandler::OnGetDropEffect(COleDataObject* pDataObject, DWORD dwKeyState, CPoint pt)
{
pDataObject;
pt;
DROPEFFECT dropEffect;
if ((dwKeyState & (MK_CONTROL|MK_SHIFT)) == (MK_CONTROL|MK_SHIFT))
dropEffect = DROPEFFECT_SCROLL|DROPEFFECT_LINK;
// check for force copy
else if ((dwKeyState & MK_CONTROL) == MK_CONTROL)
dropEffect = DROPEFFECT_SCROLL|DROPEFFECT_COPY;
// check for force move
else if ((dwKeyState & MK_ALT) == MK_ALT ||
(dwKeyState & MK_SHIFT) == MK_SHIFT)
dropEffect = DROPEFFECT_SCROLL|DROPEFFECT_MOVE;
// default -- recommended action is move
else
dropEffect = DROPEFFECT_SCROLL|DROPEFFECT_MOVE;
return dropEffect;
}
}
}
//*** Modification History ***
// $Log: $
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Real name is Steve Johnson. Programming since 1979. Started on a Heathkit Micro with a DEC LSI-11 and UCSD Pascal. Moved to PCs & DOS as soon as Turbo Pascal became available. Did some Assembly, ISR, TSR etc. All this while working for a Manufacturing Co. for 8 years. Had my own solo Co. doing barcode labeling software for 4 years (terrible business man, all I wanted to do was code). Since then working for various software companies. Moved to Windows around the time of 3.1 with Borland C then C++. Then on to VC++ and MFC, and just about anything I could get my hands on or had to learn for my job, and been at it ever since. Of course recently I've been playing with .NET, ASP, C#, WPF etc.