You might be familiar with what I'm doing if you have looked at my message on the game programming board. If not, I am compiling all of my resources (sounds and bitmaps) into a single file which will be loaded and parsed by the game (btw, this is not on the game programming board because it is more of a Windows question). So, one obstacle I overcame was the fact that the bitmap data must be DWORD-aligned for the liking of CreateDIBSection(). What I'm doing about that is writing all the bitmap header data, then any buffer bytes necessary (no more than 3), and then finally writing the image data.
Everything looks well-coded and there are no problems loading the data or creating the HBITMAP with CreateDIBSection(), but when I try to blit the bitmap to the screen (in a dialog I'm just using for testing) the colors are jacked (and I don't think I just have a bad monitor, anontymouse). There are three colors in the bitmap I'm using (which displays fine when just loading it with LoadImage()), fuschia, green, and white. The fuschia and green are black when blitted and the white is grey. Clearly I don't understand what I'm doing wrong, but it obviously must be something about loading the image from a memory mapped file that it doesn't like.