从C ++中的字节数组创建HICON?

问题描述:

我有一个PNG编码的图标作为内存中的字节数组。从这个字节数组创建HICON对象的推荐方法是什么?

I have a PNG-encoded icon as a byte array in memory. What is the recommended way of creating an HICON object from this byte array?

如果你知道一个没有解决方案的虚拟奖励积分ATL或GDI + ...:)

Imaginary bonus points if you know a solution without ATL or GDI+... :)

HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, dataSize);
LPVOID pImage = GlobalLock(hMem);
memcpy(pImage, pngData, dataSize);
GlobalUnlock(hMem);

ATL::CComPtr<IStream> pStream;
CreateStreamOnHGlobal(hMem, TRUE, &pStream);

Gdiplus::Bitmap *pBitmap = new Gdiplus::Bitmap(pStream);
HICON YOUR_HICON = pBitmap->GetHICON();