代码拉取完成,页面将自动刷新
#pragma once
#include <Shellapi.h>
#include <atl.mini/SComHelper.h>
struct IFileDropHandler{
virtual void OnFileDropdown(HDROP hDrop) = 0;
};
class CDropTarget:public SOUI::SUnknownImpl<IDropTarget>
{
protected:
IFileDropHandler *m_pFileDropHandler;
public:
CDropTarget(IFileDropHandler *pDropHandler):m_pFileDropHandler(pDropHandler)
{
SASSERT(m_pFileDropHandler);
}
virtual ~CDropTarget(){}
COM_INTERFACE_BEGIN()
COM_INTERFACE(IDropTarget)
COM_INTERFACE_END()
//////////////////////////////////////////////////////////////////////////
// IDropTarget
virtual HRESULT STDMETHODCALLTYPE DragEnter(
/* [unique][in] */ __RPC__in_opt IDataObject *pDataObj,
/* [in] */ DWORD grfKeyState,
/* [in] */ POINTL pt,
/* [out][in] */ __RPC__inout DWORD *pdwEffect)
{
*pdwEffect=DROPEFFECT_LINK;
return S_OK;
}
virtual HRESULT STDMETHODCALLTYPE DragOver(
/* [in] */ DWORD grfKeyState,
/* [in] */ POINTL pt,
/* [out][in] */ __RPC__inout DWORD *pdwEffect)
{
*pdwEffect=DROPEFFECT_LINK;
return S_OK;
}
virtual HRESULT STDMETHODCALLTYPE DragLeave( void)
{
return S_OK;
}
virtual HRESULT STDMETHODCALLTYPE Drop(
/* [unique][in] */ __RPC__in_opt IDataObject *pDataObj,
/* [in] */ DWORD grfKeyState,
/* [in] */ POINTL pt,
/* [out][in] */ __RPC__inout DWORD *pdwEffect)
{
FORMATETC format =
{
CF_HDROP, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL
};
STGMEDIUM medium;
if(FAILED(pDataObj->GetData(&format, &medium)))
{
return S_FALSE;
}
HDROP hdrop = static_cast<HDROP>(GlobalLock(medium.hGlobal));
if(!hdrop)
{
return S_FALSE;
}
if(m_pFileDropHandler)
{
m_pFileDropHandler->OnFileDropdown(hdrop);
}
DragFinish(hdrop);
GlobalUnlock(medium.hGlobal);
*pdwEffect=DROPEFFECT_LINK;
return S_OK;
}
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。