在VC对话框中实现打印和打印预览.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在VC对话框中实现打印和打印预览

在VC对话框中实现打印和打印预览(附实现步骤)  时间:2008-01-27 作者:佚名 ??? 在一般的软件开发中打印和打印预览是经常要用到的功能,对于VC6.0中的文档/视图(Doc/View)框架,可以很方便的使用缺省的打印和打印预览。但是,如果应用程序是基于对话框的就没有办法利用这种便利。而很多情况下,基于对话框的程序也需要打印和打印预览功能。那该怎么办呢?这正是本文将要解决的问题。 1 实现打印 在对话框应用程序中不具备MFC的视和框架交互,要想实现打印和打印预览必须直接获取打印机的设备环境句柄,这时可以设置CPringDialog类中的构造函数的参数,获取打印机的设备环境句柄。利用这个句柄,转换为指针,则按打印流程实现打印任务。 (1)从CFrameWnd类派生出主窗口类CMyFrameWnd加入项目,这个类将作为控制类来实现程序的打印和打印预。 (2)在CMyFrameWnd中加入打印和打印预览相关的函数,为了方便起见,名字和CView视图类中缺省的打印和打印预览虚函数名相同。但这些函数是以成员函数的形式加入的,而不是重载。这里主要介绍Print和OnPrint函数。 Print函数是打印控制函数,由它来弹出打印对话框,取得用户设置信息,如打印机、纸张大小等。还有建立一个打印机DC和设置DOCINFO结构,该结构包含输入输出文件名及其它一些信息,StartDoc函数要该结构作参数。还要设置打印区域,调用打印函数等 void CMyFrameWnd::Print() { CDC dc; CPrintDialog printDlg(FALSE); if (printDlg.DoModal() != IDOK) //弹出打印对话框,取得用户设置参数 return; dc.Attach(printDlg.GetPrinterDC()); //绑定一个打印机DC到CDC dc.m_bPrinting=TRUE; DOCINFO di; //初始化打印机的DOCINFO memset(di,0,sizeof (DOCINFO)); di.cbSize=sizeof (DOCINFO); BOOL bPrintingOK=dc.StartDoc(di); //开始一个打印任务 CPrintInfo Info; Info.m_rectDraw.SetRect(0,0,dc.GetDeviceCaps(HORZRES), c.GetDeviceCaps(VERTRES));    //设置打印区域大小 OnBeginPrinting(dc,Info); //打印初始化 for (UINT page = Info. GetMinPage ( ); page = Info. GetMaxPage() bPrintingOK; page++) { dc.StartPage(); //开始一个新的打印页 Info.m_nCurPage=page; OnPrint(dc,Info); //打印 bPrintingOK=(dc.EndPage() 0); //打印页结束 } OnEndPrinting(dc,Info); //打印完成后释放资源 if (bPrintingOK) dc.EndDoc(); //一个打印任务结束 else dc.AbortDoc(); //终止打印任务 dc.Detach(); //释放打印机DC } OnPrint函数主要设置映射参数,调用对话框的绘图函数等功能,具体如下: void CMyFrameWnd::OnPrint(CDC *pDC,CPrintInfo *pInfo)// { if (!pDC || !pInfo) return; CFont *pOldFont=pDC-SelectObject(m_PrinterFont); //设置映射参数及边界 pDC-SetMapMode(MM_ANISOTROPIC); pDC-SetWindowExt(m_LogicalPageSize); pDC-SetViewportExt(m_PaperSize); pDC-SetWindowOrg(-LEFT_MARGIN*m_CharSize.cx,0); pDC-SetWindowOrg(0,0); pDC-SelectObject(pOldFont); } ? 2 实现打印预览 通过以上几个函数就已经可以打印了,要实现打印预览,还要作一些工作。因为打印预览函数的执行都依赖于CView和CFrameWnd框架,所以,我们建立临时的框架类和视图类,然后调用这个临时视图类的缺省函数OnFilePrint和OnFilePrintPreview。 (1)从CView类派生出CMyView类加入项目。并在CMyV

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档