从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();