IDataObjectから、ファイルを列挙

(2004.03.25)
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;
}
一覧に戻る
© 2003 WAC.com All Right Reserved.