DataGrid的打印(三)

//属性情報の印刷
void CAttriPrintDlg::PrintData()
{
 // Create and show the PrintDialog
 CPrintDialog dlg(TRUE, PD_ALLPAGES|PD_ALLPAGES|PD_NOPAGENUMS, NULL);
 PRINTDLG *pPrintDlg = &dlg.m_pd;
 AfxGetApp()->GetPrinterDeviceDefaults(pPrintDlg);
 DEVMODE* lpDevMode = (DEVMODE*)::GlobalLock(pPrintDlg->hDevMode);
 ::GlobalUnlock(pPrintDlg->hDevMode);
 lpDevMode->dmPaperSize = DMPAPER_A3; //A3 297 x 420 mm
 lpDevMode->dmOrientation = DMORIENT_LANDSCAPE; //橫向

 if(dlg.DoModal() == IDCANCEL)
  return;

 // create a CDC and attach it to the default printer
 CDC dcPrinter;
 dcPrinter.Attach(dlg.CreatePrinterDC());

 // initialize DOCINFO
 DOCINFO docinfo;
 memset(&docinfo, 0, sizeof(docinfo));
 docinfo.cbSize = sizeof(docinfo);
 CString title;
 GetWindowText(title);
 docinfo.lpszDocName = title;

 // if it fails, complain and exit gracefully
 if (dcPrinter.StartDoc(&docinfo) < 0)
 {
  MessageBox(_T("プリンタを初期化できません"));
  return;
 }

 bool bPrintHeader = _chkPrint.GetCheck() == BST_CHECKED;
 bool bPrintFooter = _chkPrint.GetCheck() == BST_CHECKED;
    CPrintHelper helper(&dcPrinter, bPrintHeader, bPrintFooter);

 // 變量初始化:
 int gridRowCount = m_Grid.GetRows();
 int rowPos = 1;
 int page = 1;
 
 while(rowPos < gridRowCount)
 {
  if (dcPrinter.StartPage() < 0)
  {
   MessageBox(_T("ページ処理を開始できません"));
   dcPrinter.AbortDoc();
   return;
  }

  helper.PrintHeader(strTitleText.c_str(), _startYear, _startImage , _endYear, _endImage);
  helper.PrintGridHeader();
  rowPos = helper.PrintPage(m_Grid, rowPos);

  helper.PrintFooter(page);

  dcPrinter.EndPage();

  ++page;
 }
 
 dcPrinter.EndDoc();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值