>Ed,
>This sounds like serious stuff. I think I will punt and go back to reading all the objects on the screen, putting them in a report and then printing the report. I have some problems with placement and grids but I think I will be able to solve those before I learn to read C++ code. Again Thanks.
OK; to me, it's not a tremendous task to replace the SelectObject() and BitBlt() calls with calls to SetDIBitsTODevice(), but it is a hassle figuring out exactly what device capabilities are available, and possibly having to write your own conversions for RGBQUAD structures to greyscale, and the BITMAPINFO structure does require some redirection.
Have you thought about copying the BitMap to a General field and just using MSPaint as an automation client to handle the conversion?