2009-12-17 107 views
2

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


虚加分,如果你不知道ATL或GDI +的解决方案... :)

+0

从中创建一个流,然后从流中加载一个图标... – Mordachai 2009-12-17 15:14:53

+0

如何从流中获取HICON? – Epaga 2009-12-17 15:22:57

回答

3
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(); 
+0

也有没有办法做到这一点没有ATL或GDI +? – Epaga 2009-12-17 15:33:01

+0

更正:现在你有HICON。没有ATL或GDI + - 不知道Epaga,我不再是那个硬核了。 – 2009-12-17 15:38:01

+0

我在GDI +中看不到一个Icon类 - 它可以与Gdiplus :: Bitmap和GetHICON一起使用。 – Epaga 2009-12-17 15:43:17

0

看起来你可以做到这一点与CreateBitmap和CreateIconIndirect,或者甚至只是CreateIcon。不要问我的代码,因为我不熟悉这种低级图形的东西。