64,646
社区成员
发帖
与我相关
我的任务
分享
LPWSTR __stdcall GetDeleteFileName(IUnknown* iUnknown)
{
UINT uFileCount = 0;
IDataObject* iDataObject = NULL;
HRESULT hr = iUnknown->QueryInterface(IID_IDataObject, (void**)& iDataObject); //通过iUnknown接口查找IDataObject接口
do
{
if (!SUCCEEDED(hr))
{
break;
}
FORMATETC fmt = { CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
STGMEDIUM stg = { TYMED_HGLOBAL };
if (!SUCCEEDED(iDataObject->GetData(&fmt, &stg)))
{
break;
}
HDROP hDrop = (HDROP)GlobalLock(stg.hGlobal);
if (hDrop == NULL)
{
break;
}
uFileCount = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
if (uFileCount <= 0)
{
break;
}
WPATH** ppPath = NULL;
*ppPath = new WPATH[uFileCount];
if (*ppPath != NULL)
{
for (UINT uIndex = 0; uIndex < uFileCount; uIndex++)
{
DragQueryFile(hDrop, uIndex, (*ppPath)[uIndex], MAX_PATH);
}
}
else
{
uFileCount = 0;
}
GlobalUnlock(stg.hGlobal);
ReleaseStgMedium(&stg);
return stg.lpszFileName;
} while (FALSE);
return NULL;
}
typedef WCHAR WPATH[MAX_PATH];
WPATH* ppPath = new WPATH[uFileCount];
for (UINT uIndex = 0; uIndex < uFileCount; uIndex++)
{
DragQueryFile(hDrop, uIndex, ppPath[uIndex], MAX_PATH);
}
WPATH* ppPath = new WPATH[uFileCount];
后DragQueryFile(hDrop, uIndex, (*ppPath)[uIndex], MAX_PATH);