#include <comdef.h>
#include <shlwapi.h>
#pragma comment(lib, "shlwapi.lib")
HRESULT OleLoadPictureFromFile(TCHAR* szFileName, IPicturePtr& spPicture)
{
HRESULT hr = S_OK;
try
{
IStreamPtr spStream;
DWORD grfMode = STGM_READ | STGM_SHARE_DENY_WRITE;
#if 1
hr = ::SHCreateStreamOnFile(szFileName, grfMode, &spStream);
#else // NO_SHLWAPI_STREAM
// IE5.0以下でSHLWAPIが使用できない場合
hr = ::_SHCreateStreamOnFile(szFileName, grfMode, &spStream);
#endif
if (FAILED(hr))
{
return hr;
}
hr = ::OleLoadPicture(spStream, 0, FALSE, IID_IPicture, (void**)&spPicture);
if (FAILED(hr))
{
return hr;
}
}
catch (...)
{
return E_FAIL;
}
return hr;
}