zoukankan      html  css  js  c++  java
  • VC:基于文档的打印

           打印过程:

    OnPreparePrinting()函数进行打印中一些信息的设置。

    OnBeginPrinting()函数创建打印资源。

    OnPrepareDC()函数设置具体打印一页时的信息。

    调用OnPrint()函数打印一页。

    1、在利用向导生成单文档和多文档应用程序的过程中,用户可以选择应用程序是否支持打印和打印预览功能。(在向导的第4部)

    2、将默认的MM_TEXT模式转换为MM_LOENGLISH模式。方法如下:SetMapMode(MM_LOENGLISH);

    3、多页打印:

           在打印或打印预览时可以在OnBeginPrinting()函数中设置打印的页数。

    如:

    void CTestView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)

    {

           // TODO: add extra initialization before printing

           CTestDoc *pDoc=GetDocument();

           ASSERT_VALID(pDoc);

           //得到打印纸的垂直分辨率

           int height=pDC->GetDeviceCaps(VERTRES);

           //得到打印纸上一英寸可打印点数目

           int ypixnum=pDC->GetDeviceCaps(LOGPIXELSY);

           //设置页数

           pInfo->SetMaxPage(3*ypixnum*drawheight/height+1);

    }

           解决第1、2页面内容相同的问题:即设置页面顶部信息。

    如下:

    void CTestView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)

    {

           // TODO: Add your specialized code here and/or call the base class

           if(pDC->IsPrinting())

           {

                  pDC->SetMapMode(MM_LOENGLISH);

                  //得到打印纸的垂直分辨率

                  int height=pDC->GetDeviceCaps(VERTRES);

                  //得到当前一页的坐标

                  int y=height*(pInfo->m_nCurPage-1);

                  pDC->SetViewportOrg(0,-y);

           }

           CView::OnPrepareDC(pDC, pInfo);

    }

  • 相关阅读:
    Jetson AGX Xavier初始化
    Jetson AGX Xavier更换apt-get源
    Mac远程访问Ubuntu
    Anaconda安装和环境的搭建
    C# NotifyIcon 托盘控件
    VS2010+OpenMP的简单使用
    VS2010+OpenCV3.4.1+zbar 64位
    datatbales 使用笔记
    ubuntu16.04 常用软件
    crontab不能正常执行的五种原因
  • 原文地址:https://www.cnblogs.com/shenchao/p/2941093.html
Copyright © 2011-2022 走看看