// file: MyEdDropTarget.h
//
class CMyEdDropTarget : public COleDropTarget
{
public:
CMyEdDropTarget::CMyEdDropTarget() { // CTOR
OleInitialize(0);
m_CF_URLA= RegisterClipboardFormat( _TEXT("UniformResourceLocator") );
m_CF_URLW= RegisterClipboardFormat( _TEXT("UniformResourceLocatorW") );
}
virtual DROPEFFECT OnDragOver(CWnd* pWnd, COleDataObject* pDataObject,
DWORD dwKeyState, CPoint point)
{
STGMEDIUM rSM;
BOOL fRet= pDataObject->GetData( m_CF_URLA, &rSM );
if ( fRet ) {
return( DROPEFFECT_LINK ); // "Drop OK"
}
return( DROPEFFECT_NONE ); //else, show the "Don't Drop" cursor
};
virtual BOOL OnDrop(CWnd* pWnd, COleDataObject* pDataObject,
DROPEFFECT dropEffect, CPoint point)
{
STGMEDIUM rSM;
BOOL fRet= pDataObject->GetData( m_CF_URLA, &rSM );
char* p= (char*)GlobalLock(rSM.hGlobal);
CStringW sw( p ); // convert to UNICODE
GlobalUnlock( rSM.hGlobal );
CEdit* pEd= (CEdit*)pWnd;
pEd->SetSel(0,-1);
pEd->ReplaceSel( sw );
return( 1 ); // success
};
UINT m_CF_URLA;
UINT m_CF_URLW;
};
Just #include that header at the top of your dialog code. Now use the following code in your OnInitDialog() function:
CMyEdDropTarget gcMyEdDropTarget; // make a global instance
BOOL MyDlg::OnInitDialog()
{
...
BOOL fRet= gcMyEdDropTarget.Register( &m_ctlEdURL );
return TRUE;
}
That's all there is to it!
Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.
Comments (0)