GDIでは通常PNGファイルを読み込むことはできないらしい。
どうしても読み込む必要があったのでちょっと調べてみた
http://code.logos.com/blog/2008/09/displaying_a_splash_screen_with_c_part_i.html
このやり方でうまく読み込めるのだが、どうやらマシンによっては読み込みにFailする。一応XPSP3から使えるとなっているのだが。。。
仕方がないのでGDI+を用いました。
HBITMAP LoadImage( HINSTANCE hinst, LPCTSTR pszName, LPCTSTR pszType ) { HRSRC hRes = FindResource(hinst, pszName, pszType); DWORD Size = SizeofResource(hinst, hRes); HGLOBAL hData = LoadResource(hinst, hRes); const void *pData = LockResource(hData); HGLOBAL hBuffer = GlobalAlloc(GMEM_MOVEABLE, Size); void *pBuffer = GlobalLock(hBuffer); CopyMemory(pBuffer, pData, Size); GlobalUnlock(hBuffer); IStream *pStream; CreateStreamOnHGlobal(hBuffer, TRUE, &pStream) ; IStream *pStream=CreateStreamOnResource(hinst,pszName,pszType); Gdiplus::Bitmap* pBitmap = Gdiplus::Bitmap::FromStream(pStream); pStream->Release(); HBITMAP ret; pBitmap->GetHBITMAP(Color(0,0,0,0),&ret); delete pBitmap; return ret; }
ああ、そうですか
どうもありがとうございます
Windows XPでWICが使える条件は、たしか.NET Frameworkの3.0あたりがインストールされていることだった気がします。