同打印对话框一样,打印设置对话框的具体表现形式取决与用户的系统。在打印设置对话框中主要是选择打印纸张以及打印方向。在图6-2的打印预览窗口中,使用的是缺省的纸张,A4大小,纵向打印。为了做一比较,这里选择A5大小的纸张,横向打印。并单击“确定”按钮关闭对话框。
在File菜单中再次选择Print Preview命令,观察改变了纸张的大小和打印方向后的打印预览结果,如图6-6所示:
图6-6 打印预览(100%)(A5幅面,横向打印)
比较图6-2和图6-6的预览效果,可以看出,改变了纸张大小和打印方向后,预览的效果确实有很大的变化。
现在可以看到,对于TestPrint程序目前的版本而言,用户不用做任何额外的努力,就能够让应用程序拥有这些很基本但又很重要的打印功能。TestPrint程序可以设置打印选项,可以进行打印预览,自然也可以在打印机上真正地输出。
当然,TestPrint程序的打印功能还有一些不尽人意之处,但对程序员来说,利用AppWizard生成的应用程序自动就拥有这些打印功能,这已经是一个很不错的起点了。在下面各节中,将逐步完善TestPrint程序的打印功能,同时介绍在MFC程序中实现打印功能的方法。
TestPrint程序第一个令人不满意的地方就是矩形的大小没有被保持:仔细比较图6-1、图6-3和图6-6中的矩形,显示在屏幕上的矩形很明显地要比打印预览窗口中显示的或打印机上打印出的矩形大出许多。这是第一个需要改进的地方。
注意OnDraw()函数中调用的Rectangle()函数,如果传递给OnDraw()函数的参数pDC代表的是显示设备环境,该函数就在屏幕上画一个长300单位、高100单位的矩形;如果pDC代表的是打印设备环境,该函数就在打印机上画一个长300单位、高100单位的矩形。问题就在于TestPrint程序现在的版本采用的是缺省的映射模式MM_TEXT,在这种映射模式下,显示设备的一个单位对应于打印机一个的单位,但是打印机的一个单位比显示设备的一个单位要小得多,因此即使使用同样的单位数,在打印机上输出的矩形也要比在屏幕上输出的矩形小得多。