Really this isn't that hard. The theory is to put them into one image and then use a function like GDI
BitBlt or GDI+
Bitmap::Clone to copy out only what you need.
The important part is to realise that they don't need to copy the entire image at once, you can select parts of it. So if your image is a 10x10 image and in the source it is at coordinates (20, 10), then the call to BitBlt would probably be something
BitBlt(hDst, 0, 0, 10, 10, hSrc, 20, 10, SRCCOPY);
assuming you are copying it to a location for the image on its own.
To make this work though you need to keep an index or keep the images at a regular size. So just a regular table (array of structures, maybe using vector) will be enough to store it. This table can just simply store the relevant information for the image.
Well, just read the
GDI documentation. You should prefer GDI+ over GDI because of complexity. Once you know the library it should be pretty easy to figure out what to do.