Create 2 compatible device contexts: a DC (dcTemp) to temporarly hold current bitmap and a DC (dcOut) to hold the results of bliting. 2) Create a compatible bitmap large enough to hold all 5 bmp's. 3) Select large bitmap into dcOut. (save pOldOutBitmap here) 4) Select bitmap[0] into dcTemp. (save pOldBitmap here - need when finished) 5) Determine what position to blit bigmap to. 6) Blit bitmap[0] (dcTemp) to position in dcOut. 7) Select bitmap[1] into dcTemp. 8) Determine what position to blit bigmap to. 9) Blit bitmap[1] (dcTemp) to position in dcOut. .... // Now all the bitmaps are in 1 DC. N) Select pOldBitmap (dcTemp.SelectObject(pOldBitmap);). N+1) Blit result to client area (pDC->BitBlt(...,&dcOut,...);). N+2) Select pOldOutBitmap (dcTemp.SelectObject(pOldOutBitmap);). That is all there is to it. If you want to increase draw speed then you should create the large bitmap as a member variable and then create a function to copy, using above method, the 5 bitmaps to it. That way you do not need to do all the coping in the OnDraw function, just blit the stored bitmap to the client area. If you want to you could create an array of bitmap IDs and use a loop to preform the repeated select, calc. position, and dcOut blits. That is how I whould do it, because then to add another bitmap all you need do is add its ID to the array. Well I hope this helps. Good Luck! INTP