views:

593

answers:

2

I'm looking for a way to embed an image in a library (Windows-only). I don't want to go the 'traditional' way of putting it in the resources (because of special circumstances that make it not so convenient to mess around with the resource handle.

Ideally, there would be something like xpm files: a 'text' representation of an image that is put in a c array and that some code converts into a bitmap in memory, which can then somehow be loaded into an HIMAGE or an HICON. The images I want to embed are 32-bit bitmaps (bmp). Any ideas? I'm using MFC so an MFC library would be fine, but of course I can use a library that doesn't use MFC too. Thanks.

+4  A: 

Google for a bin2c utility (something like http://stud3.tuwien.ac.at/~e0025274/bin2c/bin2c.c). It takes a file's binary representation and spits out a C source file that includes an array of bytes initialized to that data.

Just link the file in and you have your image sitting in a chunk of memory.

Using this kind of tool is really common on embedded systems where such things as 'resources' and even files might not exist.

Michael Burr
Worked great, thanks. For completeness: to load data from memory, I used some code from http://www.ragestorm.net/blogs/?p=9 which revolves around LookupIconIdFromDirectoryEx() and CreateIconFromResourceEx() (for HICONs).
Roel
+1  A: 

The Gimp can export to C files. I think that would be the easiest way to do it.

Leon Timmermans