VC++分頁打印實現:spa
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(); } |