How to Do Away with the Print Dialog Box in MFC PrintingID: Q140538
|
By design, a Print dialog box is displayed in MFC printing. This dialog box allows the user to change the printer settings before a printer device context (DC) is created. However, there are cases when the print dialog box is not a good idea. This article provides a way to bypass the Print dialog box for a print job.
CView::OnPreparePrinting is the first virtual function called during the
print process. It is also called during print preview. AppWizard provides
an implementation of OnPreparePrinting that calls CView::DoPreparePrinting.
DoPreparePrinting displays the print dialog box for actual printing but not
for print preview.
Therefore, in OnPreparePrinting, if CPrintInfo::m_bPreview is FALSE (an
actual print job), set it to TRUE before calling DoPreparePrinting(). This
makes DoPreparePrinting believe that the current context is that of print
preview so the print dialog box isn't shown. After DoPreparePrinting
returns, reset the variable to FALSE to let the print job go on
uninterrupted.
The following sample code prevents the Print dialog box from appearing
without affecting the print process.
BOOL CMyView::OnPreparePrinting(CPrintInfo* pInfo)
{
if ( pInfo->m_bPreview ) // normal print preview
return DoPreparePrinting(pInfo);
// actual printing
pInfo->m_bPreview = TRUE;
BOOL bRetval = DoPreparePrinting( pInfo );
pInfo->m_bPreview = FALSE;
return bRetval;
}
For more information about the MFC printing, please refer to the Programming with the Microsoft Foundation Class Library in Books Online.
Additional query words: kbinf 1.50 1.51 1.52 1.00 2.00 2.10 2.20 2.50 2.51 2.52 2.10 3.00 3.10 3.20
Keywords : kbcode kbMFC kbPrinting kbVC
Version : 1.50 1.51 1.52 | 1.00 2.00 2.10
Platform : NT WINDOWS
Issue type :
Last Reviewed: August 8, 1999