VC++分页打印实现:
C++ Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
//打印对话框 DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_NOSELECTION | PD_HIDEPRINTTOFILE; CPrintDialog dlg(FALSE); if (dlg.DoModal() == IDOK) { //获得打印机DC HDC hDC = dlg.GetPrinterDC(); if (hDC == NULL ) { return ; } //通过HDC获得CDC指针 CDC *pDC = CDC::FromHandle(hDC); pDC->m_bPrinting = TRUE; //文档信息 DOCINFO di; ::ZeroMemory (&di, sizeof (DOCINFO)); di.cbSize = sizeof (DOCINFO); di.lpszDocName = _T( "Demo" ); //开始打印 BOOL bPrinting = pDC->StartDoc(&di); for (UINT nPage = 0 ; nPage < 10 && bPrinting; nPage++) { pDC->StartPage(); //输出文本 CString strText = _T( "" ); strText.Format(_T( "第%d页" ), nPage + 1 ); pDC->TextOut( 100 , 0 , strText); for ( int i = 0 ; i < 100 ; i++) { pDC->TextOut( 100 , 100 * (i + 1 ), _T( "Hello World!" )); } bPrinting = (pDC->EndPage() > 0 ); } if (bPrinting) { pDC->EndDoc(); } else { pDC->AbortDoc(); } //结束打印 pDC->EndDoc(); //删除DC pDC->DeleteDC(); } |