工控编程吧

标题: 上位机MFC如何实现分页打印 [打印本页]

作者: qq263946146    时间: 2019-8-3 10:21
标题: 上位机MFC如何实现分页打印

  1. void CDemoDlg::OnTest()
  2. {
  3.         //打印对话框
  4.         DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS
  5.                 | PD_NOSELECTION | PD_HIDEPRINTTOFILE;
  6.         CPrintDialog dlg(FALSE);

  7.         if (dlg.DoModal() == IDOK)
  8.         {
  9.                 //获得打印机DC
  10.                 HDC hDC = dlg.GetPrinterDC();
  11.                 if (hDC == NULL)
  12.                 {
  13.                         return;
  14.                 }

  15.                 //通过HDC获得CDC指针
  16.                 CDC* pDC = CDC::FromHandle(hDC);

  17.                 pDC->m_bPrinting = TRUE;

  18.                 //文档信息
  19.                 DOCINFO di;
  20.                 ::ZeroMemory (&di, sizeof (DOCINFO));
  21.                 di.cbSize = sizeof (DOCINFO);
  22.                 di.lpszDocName = _T("Demo");

  23.                 //开始打印
  24.                 BOOL bPrinting = pDC->StartDoc(&di);

  25.                 for (UINT nPage = 0; nPage < 10 && bPrinting; nPage++)
  26.                 {
  27.                         pDC->StartPage();

  28.                         //输出文本
  29.                         CString strText = _T("");
  30.                         strText.Format(_T("第%d页"), nPage + 1);
  31.                         pDC->TextOut(100, 0, strText);
  32.                         pDC->TextOut(100, 200, _T("Hello World!"));

  33.                         bPrinting = (pDC->EndPage() > 0);
  34.                 }

  35.                 if (bPrinting)
  36.                 {
  37.                          pDC->EndDoc();
  38.                 }
  39.                 else
  40.                 {
  41.                         pDC->AbortDoc();
  42.                 }

  43.                 //结束打印
  44.                 pDC->EndDoc();

  45.                 //删除DC
  46.                 pDC->DeleteDC();
  47.         }
  48. }
复制代码

可以看到开始打印,结束打印,暂停打印对应函数为StartDoc,EndDoc,AbortDoc打开分布打印对应函数为StartPage,EndPage









欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4