第8章 打印和打印预览.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 打印和打印预览

第8章 打印和打印预览 在Windows编程中,打印机输出和屏幕输出一样。唯一的区别是输出设备环境不一样。打印和打印预览功能是必不可少的。MFC通过CView类提供文档的打印与打印预览功能。本章主要讲述Visual C++中关于打印和打印预览的知识。主要涉及Windows API实现打印;使用MFC实现打印;用MFC实现打印预览。本章的知识点包括: Windows API和MFC的打印机支持 使用MFC实现打印 使用MFC实现打印预览 8.1 Windows API和MFC的打印机支持 本节主要讲述Windows API和MFC类库对打印机的支持。 8.1.1 打印机信息 在C/C++语言中是可以直接处理打印机硬件的,但是Windows一般不允许应用程序这样做,一般需要检索特定硬件的信息。应用程序需要确定纸张的大小、纸盒号、打印机的图形能力等。Windows有两个函数DeviceCapabilities()和GetDeviceCaps(),提供了应用程序可能需要的有关打印机的信息。GetDeviceCaps()是个提供关于显示、打印机、绘图仪和其他输出设备信息的通用函数。在Win32以前的Windows操作系统里面,DeviceCapabilities()不是直接由操作系统支持,而是打印机驱动程序的一部分。Win32把这一功能移植到操作系统内部,简化了应用程序开发期间的使用。DeviceCapabilities()可以获得打印机的信息 8.1.2 文本和字符 Win32 API提供的函数可以控制文本的特征,其中包括文本放置位置、字符之间的距离、文本颜色、文本之后的背景色等。字体都有不同的大小特征,可以用GetTextMetrics()函数决定。TrueType字体还包含关于诸如“紧缩对”之类特征的信息。紧缩对是一对字符,当被一起放在字符串中时,间距会被调整到具有最佳外观。GetKerningPairs()函数可以检索这些字符组合。TrueType字体还有不能适用于其它字体的特征。函数GetOutlineTextMetrics() 检索这些特征。 8.2 用MFC编程实现打印 MFC对打印和打印预览等进行了包装。在MFC支持的应用程序中,OnDraw()函数负责显示屏和其他设备进行绘制或者打印。本节简要的介绍利用MFC实现打印编程。 8.2.1 打印过程 用于打印和打印预览的函数包括:OnBeginPrinting()、OnDraw()、OnEndPrinting()、OnPrepareDC()、OnPreparePrinting()和OnPrint()。为了实现文档打印,MFC以特定的次序调用这几个函数。首先,调用OnPreparePrinting(),这个函数调用了DoPreparePrinting()。而DoPreparePrinting()则负责显示Print对话框并创建打印机DC。OnPreparePrinting()可以获得打印作业的信息。 8.2.2 实现分页 文档打印是逐页进行的。函数OnPrint()执行实际分页。打印机设备上下文调用OnPrint()执行打印。框架用一个CPrintInfo结构和一个设备上下文调用OnPrint(),OnPrint()把设备上下文传递给OnDraw函数,必须取代OnPrint()以执行只应该在打印期间实现而不用于屏幕显示的其他渲染。程序必须在OnPrint函数中放入页眉页脚,而不是在OnDraw函数中。在实际程序开发过程中,为了实现分页,需要修改OnPreparePrinting()函数,取代默认的OnPrint()函数,添加帮助函数,PrintTitlePage()用于打印标题页,PrintPageHeader()用于在包含应用程序内容的实际页上打印页眉。分页打印最关键的还有页码。在CPrintInfo类中存储了相关的信息,GetMinPage()/SetMinpage(),GetMaxPage()/SetMaxPage(),GetFromPage(),GetToPage(),m_nCurpage。 8.2.3 CPrintInfo类 CPrintInfo类存储着关于打印或打印预览作业的的信息。框架在每次Print或Print Preview命令被选择时创建一个CPrintInfo对象,并当命令完成时销毁它。CPrintInfo包含着关于整体打印作业的信息,也包含着打印作业的当前状态。 一些信息存储在相关的CPrintDialog对象中,这个对象包含着用户在Print对话框中输入的信息。打印期间,CPrintInfo对象在框架和视图之间传递,并用于两者之间的信息交换。文档的长度是直到打印后才知道的。在这种情况下,视图类每次在页被打印后测试文档的结尾。当到达结尾

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档