Windos程序设计TXT13.使用打印机.doc

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

Windows程序设计TXT13.使用打印机 使用打印机 壹佰软件开发小组 整理编译 为了处理文字和图形而使用视讯显示器时,设备无关的概念看来非常完美,但对于打印机,设备无关的概念又怎样呢? 总的说来,效果也很好。在Windows程序中,用于视讯显示器的GDI函数一样可以在印表纸上打印文字和图形,在以前讨论的与设备无关的许多问题(多数都与平面显示的尺寸、分辨率以及颜色数有关)都可以用相同的方法解决。当然,一台打印机不像使用阴极射线管的显示器那么简单,它们使用的是印表纸。它们之间有一些比较大的差异。例如,我们从来不必考虑视讯显示器没有与显示卡连结好,或者显示器出现「屏幕空间不够」的错误,但打印机off line和缺纸却是经常会遇到的问题。 我们也不必担心显示卡不能执行某些图形操作,更不用担心显示卡能否处理图形,因为,如果它不能处理图形,就根本不能使用Windows。但有些打印机不能打印图形(尽管它们能在Windows环境中使用)。绘图机尽管可以打印向量图形,却存在位图块的传输问题。 以下是其它一些需要考虑的问题: 打印机比视讯显示器慢。尽管我们没有机会将程序性能调整到最佳状态,却不必担心视讯显示器更新所需的时间。然而,没有人想在做其它工作前一直等待打印机完成打印任务。   程序可以用新的输出覆盖原有的显示输出,以重新使用视讯显示器表面。这对打印机是不可能的,打印机只能用完一整页纸,然后在新一页的纸上打印新的内容。   在视讯显示器上,不同的应用程序都被窗口化。而对于打印机,不同应用程序的输出必须分成不同的文件或打印作业。   为了在GDI的其余部分中加入打印机支持功能,Windows提供几个只用于打印机的函数。这些限用在打印机上的函数(StartDoc、EndDoc、StartPage和EndPage)负责将打印机的输出组织打印到纸页上。而一个程序呼叫普通的GDI函数在一张纸上显示文字和图形,和在屏幕上显示的方式一样。 在第十五、十七和十八章有打印位图、格式化的文字以及metafile的其它信息。 打印入门 当您在Windows下使用打印机时,实际上启动了一个包含GDI32动态链接库模块、打印驱动程序动态连结模块(带.DRV扩展名)、Windows后台打印程序,以及有用到的其它相关模块。在写打印机打印程序之前,让我们先看一看这个程序是如何进行的。 打印和背景处理 当应用程序要使用打印机时,它首先使用CreateDC或PrintDlg来取得指向打印机设备内容的句柄,于是使得打印机设备驱动程序动态链接库模块被加载到内存(如果还没有加载内存的话)并自己进行初始化。然后,程序呼叫StartDoc函数,通知说一个新文件开始了。StartDoc函数是由GDI模块来处理的,GDI模块呼叫打印机设备驱动程序中的Control函数告诉设备驱动程序准备进行打印。 打印一个文件的程序以StartDoc呼叫开始,以EndDoc呼叫结束。这两个呼叫对于在文件页面上书写文字或者绘制图形的GDI命令来说,其作用就像分隔页面的书挡一样。每页本身是这样来划清界限的:呼叫StartPage来开始一页,呼叫EndPage来结束该页。 例如,如果应用程序想在一页纸上画出一个椭圆,它首先呼叫StartDoc开始打印任务,然后再呼叫StartPage通知这是新的一页,接着呼叫Ellipse,正如同在屏幕上画一个椭圆一样。GDI模块通常将程序对打印机设备内容做出的GDI呼叫储存在磁盘上的metafile中,该文件名以字符串~EMF(代表「增强型metafile」)开始,且以.TMP为扩展名。然而,我在这里应该指出,打印机驱动程序可能会跳过这一步骤。 当绘制第一页的GDI呼叫结束时,应用程序呼叫EndPage。现在,真正的工作开始了。打印机驱动程序必须把存放在metafile中的各种绘图命令翻译成打印机输出数据。绘制一页图形所需的打印机输出数据量可能非常大,特别是当打印机没有高级页面制作语言时,更是如此。例如,一台每英寸600点且使用8.5×11英寸印表纸的激光打印机,如果要定义一个图形页,可能需要4百万以上字节的数据。 为此,打印机驱动程序经常使用一种称作「打印分带」的技术将一页分成若干称为「输出带」的矩形。GDI模块从打印机驱动程序取得每个输出带的大小,然后设定一个与目前要处理的输出带相等的剪裁区,并为metafile中的每个绘图函数呼叫打印机设备驱动程序的Output函数,这个程序叫做「将metafile输出到设备驱动程序」。对设备驱动程序所定义的页面上的每个输出带,GDI模块必须将整个metafile「输出到」设备驱动程序。这个程序完成以后,该metafile就可以删除了。 对每个输出带,设备驱动程序将这些绘图函数转换为在打印机上打印这些图形所需

文档评论(0)

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

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

1亿VIP精品文档

相关文档