Hello, Neil.
You can try next:
1. Create special menu procedure that get window record and prepare and update DocVc record as You wish.
2. Run PrintDocument() procedure.
I not recommend change DoPrint... procedure to updated state, because that cause the problems with threads.