#include <comdef.h>
class CPictDesc : public PICTDESC
{
public:
CPictDesc()
{
::ZeroMemory(this, sizeof(this));
this->cbSizeofstruct = sizeof(this);
}
};
// szNameにIDを渡す場合は、MAKEINTRESOURCE()を使用する
HRESULT OleLoadPictureFromResource(HINSTANCE hInst, LPCTSTR szName, IPicturePtr& spPicture)
{
HRESULT hr = S_OK;
try
{
HBITMAP hBitmap = ::LoadBitmap(hInst, szName);
if (hBitmap == NULL)
{
return E_FAIL;
}
CPictDesc pd;
pd.picType = PICTYPE_BITMAP;
pd.bmp.hbitmap = hBitmap;
pd.bmp.hpal = NULL;
hr = ::OleCreatePictureIndirect(&pd, IID_IPicture, FALSE, (void**)&spPicture);
if (FAILED(hr))
{
return hr;
}
}
catch (...)
{
return E_FAIL;
}
return hr;
}