Indeed, OnPreparePrinting() and OnPrepareDC() should initialize device context properly.
If you do not need something fancy to print, OnDraw should handle printing as it were a screen.
It is really hard to guess what is going on, without seeing the code.
Woould it be possible to post zipped your (or sample) project that reproduces this error?