static HRESULT EnumFileNamesFromDataObject(IDataObjectPtr spDataObject, std::vector<CString>& strFileNames)
{
if (spDataObject == NULL)
{
ATLASSERT(0);
return E_FAIL;
}
HRESULT hr = S_OK;
CStgMedium medium; // クラスなので、自分で解放してくれる
FORMATETC fe = {CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
hr = spDataObject->GetData(&fe, &medium);
if (FAILED(hr))
{
return hr;
}
// ファイル名を列挙する
int nCount = ::DragQueryFile((HDROP)medium.hGlobal, -1, NULL, 0);
for (int i = 0; i < nCount; i++)
{
TCHAR szPath[_MAX_PATH];
::DragQueryFile((HDROP)medium.hGlobal, i, szPath, sizeof(szPath));
strFileNames.push_back(szPath);
}
return S_OK;
}