1 Star 0 Fork 0

soui3-demo/SlogViewer

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
droptarget.h 2.17 KB
一键复制 编辑 原始数据 按行查看 历史
#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;
}
};
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/soui3-demo/SlogViewer.git
git@gitee.com:soui3-demo/SlogViewer.git
soui3-demo
SlogViewer
SlogViewer
master

搜索帮助