static void PrintDocument_PrintPage(object sender, PrintPageEventArgs e) { if (CalledViaCom) { Point p = new Point(Top, Left); e.Graphics.DrawImageUnscaled(m_PrintBitmap, p); } else e.Graphics.DrawImage(m_PrintBitmap,e.Graphics.VisibleClipBounds); e.HasMorePages = false; }The members Top,Left and CalledViaCom are populated when called from VFP ( or anything not native ) - works like a charm