2009-12-17 4 views
2

메모리의 바이트 배열로 PNG로 인코딩 된 아이콘이 있습니다. 이 바이트 배열에서 HICON 객체를 만드는 권장 방법은 무엇입니까?C++의 바이트 배열에서 HICON을 생성 하시겠습니까?


상상 보너스 포인트 당신은 ATL 또는 GDI +없이 솔루션 ... : 당신이 CreateBitmap 및 CreateIconIndirect이 작업을 수행하거나, 어쩌면 단지 CreateIcon 수처럼 보이는

+0

스트림을 생성 한 다음 스트림에서 아이콘을로드하십시오. – Mordachai

+0

스트림에서 HICON을 얻는 방법은 무엇입니까? – Epaga

답변

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

+0

수정 됨 : 이제 HICON이 있습니다. ATL 또는 GDI +가 없으면 Epaga를 알지 못합니다. 나는 더 이상 그 핵심이 아닙니다. –

+0

GDI +에서 Icon 클래스가 보이지 않습니다. 대신 Gdiplus :: Bitmap과 GetHICON에서 작동합니다. – Epaga

0

을 알고있는 경우. 이 저수준 그래픽에 익숙하지 않기 때문에 코드를 묻지 마십시오.

관련 문제