摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P471
在用视频显示器显示文字和图形时,“与设备无关”(device independence)这个概念看起来很好。但是这个概念应用到打印机上效果如何呢?
总的来说是个好消息。在 Windows 程序中,你可以调用 GDI 函数把文字和图形显示到视频显示器上,同样地,你可以调用这些函数把它们打印到纸上。我们在本书前几章讨论过的大多数关于“与设备无关”的问题——主要是那些和显示平面的大小、分辨率以及它的色彩能力相关的问题——都可以用同样的方法去分析和解决。然而,打印机和视频显示器之间的差异并不只是使用纸张和使用阴极射线管的区别。它们还有一些更重要的差别。比如说,我们从来不需要考虑视频显示器没有连接到显示适配器,或者屏幕显示超出范围之类的问题,但是打印机脱机(offline)或者打印纸用完的现象却很常见。
我们同样不用担心视频显示器无法执行某些特定的图形操作。显示适配器要么能够处理图形,要么不能。如果它不能处理,它就根本不能用在 Windows 上。但是有些打印机虽然不能打印图形,却能使用在 Windows 上。绘图仪能够打印矢量图形,但是处理位图时却会有问题。
还有下面这些问题需要考虑。
- 打印机比视频显示器慢。虽然我们有时候尝试调整我们的程序以达到最佳性能,但是我们从来不用担心视频显示器刷新一次所需要的时间。可是没有人会去等待一台慢速打印机完成打印任务后再继续工作。
- 计算机程序可以重复使用显示区域,因为新的输出会覆盖旧的输出。打印机无法这样做。打印机必须弹出已完成的打印纸,然后再打印下一张。
- 在视频显示器上,不同的应用程序显示在不同的窗口。在打印机上,不同的应用程序的输出必须分成不同的文档或者打印作业。
为了让 GDI 支持打印机,Windows 提供了几个专用于打印机的函数。这些函数(StartDoc、EndDoc、StartPage 和 StopPage)负责把打印机的输出组织成不同的打印页。程序继续通过调用标准 GDI 函数把文字和图形输出显示在这些页面上,就如同把它们显示在屏幕上一样。
第 15 章、第 17 章和第 18 章提供有关位图打印、文本格式和图元文件的更多信息。