convert 24-bit to 8-bit + a palette (hard) 2) allocate memory for the DIB (easy) 3) fill in the BITMAPINFOHEADER (easy) 4) fill in the DIB's palette (easy) 4) copy each row of the 8-bit image to a row of the DIB image, insuring that each row of the DIB is padded to make the width of each row a multiple of 4 BYTEs. remember that DIBs are stored vertically flipped, compared to most images. (not too hard, not too easy) or... (shameless plug) visit http://www.smalleranimals.com/isource.htm