描述:
我在activex下写了一个ole 的拖放代码,结果发现把这个activex嵌入到网页以后从自己网页的超联接不能拖放,新建一个网页,从别的网页拖入这个activex却可以,非常疑惑!希望各位大哥帮忙!!
附:ole拖放源码
DROPEFFECT COleListDropTarget::OnDragEnter(CWnd* pWnd, COleDataObject*
pDataObject, DWORD dwKeyState, CPoint point )
{
if (!pDataObject->IsDataAvailable(CF_TEXT))
{
return DROPEFFECT_NONE;
}
// if the control key is held down, return a drop effect COPY
if((dwKeyState&MK_CONTROL) == MK_CONTROL)
return DROPEFFECT_COPY;
// Otherwise return a drop effect of MOVE
else
return DROPEFFECT_MOVE;
}
//
// OnDragLeave is called by OLE dll's when drag cursor leaves
// a window that is REGISTERed with the OLE dll's
//
void COleListDropTarget::OnDragLeave(CWnd* pWnd)
{
// Call base class implementation
COleDropTarget::OnDragLeave(pWnd);
}
//
// OnDragOver is called by OLE dll's when cursor is dragged over
// a window that is REGISTERed with the OLE dll's
//
DROPEFFECT COleListDropTarget::OnDragOver(CWnd* pWnd, COleDataObject*
pDataObject, DWORD dwKeyState, CPoint point )
{
if (!pDataObject->IsDataAvailable(CF_TEXT))
return DROPEFFECT_NONE;
if((dwKeyState&MK_CONTROL) == MK_CONTROL)
return DROPEFFECT_NONE;
else
return DROPEFFECT_MOVE; // move source
}
BOOL COleListDropTarget::OnDrop(CWnd* pWnd, COleDataObject* pDataObject,
DROPEFFECT dropEffect, CPoint point )
{
HGLOBAL hGlobal;
LPCSTR pData;
if (pDataObject->IsDataAvailable(CF_TEXT))
{
STGMEDIUM Stg;
BOOL bValue = pDataObject->GetData(CF_TEXT, &Stg);
TCHAR *strText = (TCHAR*)GlobalLock(Stg.hGlobal);
CString strUrl;
strUrl.Format("%s",strText);
strUrl.Delete(0, 8);
strUrl.Replace("/", "\\\\");
AfxMessageBox(strUrl);
BSTR b=_com_util::ConvertStringToBSTR(strUrl);
pAviCtl->get_FileName(&b);
pAviCtl->ShowImag();
GlobalUnlock(Stg.hGlobal);
GlobalFree(Stg.hGlobal);
}
if((dropEffect&DROPEFFECT_MOVE) != DROPEFFECT_MOVE)
return FALSE;
// Get text data from COleDataObject
hGlobal=pDataObject->GetGlobalData(CF_TEXT);
// Get pointer to data
pData=(LPCSTR)GlobalLock(hGlobal);
ASSERT(pData!=NULL);
// Unlock memory - Send dropped text into the "bit-bucket"
GlobalUnlock(hGlobal);
return TRUE;
}
void COleListDropTarget::SetParent(CWnd *pParent)
{
m_pParent = pParent;
}