I tried to bitblt a CBitmap object into a printer DC, just as if it was a
display DC, and it printed
a black square instead. Is there some type of initialization needed?
Yes. You will need a DIB. You will use GetDIBits to transfer from
the screen to the DIB, then StretchDIBits to transfer from the DIB to
the printer. The reason that StretchBlt doesn't work is that the
respective driver provides meaning to the format of the memory used
for its device surface. Display surfaces have a different format that
printers. Indeed, this is part of the motivation for the DIB; it is
device-independent. If it were me, I would probably create a 24bpp
DIB and avoid color table anoyances when blitting, otherwise you'll
have to set up a palette too.
I see no water here.
3. Gloom Deluxe