工控编程吧

标题: 上位机MFC如何获得页面信息 [打印本页]

作者: qq263946146    时间: 2019-8-3 10:13
标题: 上位机MFC如何获得页面信息
页面的信息可以通过对话框处理类的设备上下文获得。
                CDC* pDC = CDC::FromHandle(hDC);

                //获得打印页面宽度
                int nHorzSize = pDC->GetDeviceCaps(HORZRES);
                //获得打印页面高度
                int nVertSize = pDC->GetDeviceCaps(VERTRES);
                //获得物理页面宽度
                int nWidth =  pDC->GetDeviceCaps(PHYSICALWIDTH);
                //获得物理页面高度
                int nHeight = pDC->GetDeviceCaps(PHYSICALHEIGHT);
                //获得左、右边距
                int nOffsetX = pDC->GetDeviceCaps(PHYSICALOFFSETX);
                //获得上、下边距
                int nOffsetY= pDC->GetDeviceCaps(PHYSICALOFFSETY);

我们可以通过按钮控件的点击函数来查看效果。
  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.                 //获得打印页面宽度
  18.                 int nHorzSize = pDC->GetDeviceCaps(HORZRES);
  19.                 //获得打印页面高度
  20.                 int nVertSize = pDC->GetDeviceCaps(VERTRES);
  21.                 //获得物理页面宽度
  22.                 int nWidth =  pDC->GetDeviceCaps(PHYSICALWIDTH);
  23.                 //获得物理页面高度
  24.                 int nHeight = pDC->GetDeviceCaps(PHYSICALHEIGHT);
  25.                 //获得左、右边距
  26.                 int nOffsetX = pDC->GetDeviceCaps(PHYSICALOFFSETX);
  27.                 //获得上、下边距
  28.                 int nOffsetY= pDC->GetDeviceCaps(PHYSICALOFFSETY);

  29.                 CString strText = _T("");
  30.                 strText.Format(_T("%s%d\n%s%d\n%s%d\n%s%d\n%s%d\n%s%d"),
  31.                         _T("打印页面宽度:"), nHorzSize,
  32.                         _T("打印页面高度:"), nVertSize,
  33.                         _T("物理页面宽度:"), nWidth,
  34.                         _T("物理页面高度:"), nHeight,
  35.                         _T("左右边距:"), nOffsetX,
  36.                         _T("上下边距:"), nOffsetY);
  37.                 AfxMessageBox(strText);
  38.         }
  39. }
复制代码
[MFC408]1[/MFC408]
[weixinlianxi]1[/weixinlianxi]






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