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);

}

posted @ 2013-03-02 23:12  慧由心生  阅读(530)  评论(0编辑  收藏  举报