下载此文档

打印和打印预览.doc


文档分类:办公文档 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
打印和打印预览
最后,我们要给绘图程序增加打印和打印预览功能。我们希望文档分两页打印,第一页为封面,打印文档名字。第二页输出文档内容,并在页眉上打印文档名字。虽然AppWizard已经自动生成了打印和打印预览的代码,但是许多情况下,并不能符合要求。
这是因为:
(屏幕)显示的分辨率不同:打印机的分辨率用每英寸多少个点来描述,屏幕分辨率用单位面积的像素点来表示。对于同样的Arial字体下的一个字符,在屏幕上用20个像素表示,而在打印机上则需要50点。在编辑器程序中,使用的映射模式为MM_TEXT,在这种模式下,一个逻辑单位对应于一个像素点。我们已经知道,Windows是按照逻辑单位来绘图的。这样,根据MM_TEXT模式的逻辑单位(实际上也就是像素数目)决定比例的原则打印出来得内容自然要比屏幕上看到的要小的多。因此,前面在初始化视图OnInitialUpdate时候,在选择绘图的映射模式上,没有采用以前使用的缺省的MM_TEXT模式,而是采用了MM_LOENGLISH。
:窗口可以看作是无边界的,可以在窗口外面画,而不会引起错误,窗口会自动剪裁超出边界的图形。但打印机却不同,它是按页打印的。打印输出时必须自己处理分页和换页,如果不作这样的处理的话,行和行之间就会叠加起来。
要正确打印输出屏幕上的内容,就必须解决以上两个问题。对于第一个问题,有两种方法:一是利用SetMapMode(int nMode) 设置别的映射模式,比如采用MM_LOENGLISH,。
要处理打印分页、换页,就必须修改框架处理打印消息的缺省行为,在其中计算和换页。此外,我们还希望在打印时在页眉处能够输出标题(使用文件名作为标题)、在页脚处输出页码。
为了实现打印和打印预览功能,首先需要了解MFC的打印体系结构,即框架是如何处理打印文档的要求的。
MFC的打印工作大致上是这样进行的:

(CDC)对象。

::StartDoc开始打印
::StartPage开始打印一页
()方法打印输出一页内容
::EndPage结束一页的打印

::EndDoc结束打印

框架的打印文档功能是从OnPreparePrinting(CPrintInfo* pInfo)开始的,在缺省的情况下,它只是简单的调用视图的DoPreparePrinting()函数。DoPreparePrinting()显示Print对话框,并创建与打印机相匹配的设备上下文。如果要想改变打印机初始设置,可以在这里改。缺省设置下,使用1作为第一页编号(注意:打印的页号是从1开始编号而不是0),用0xFFFF作为文档的最后一页编号。因为Draw要求分两页打印输出,因此要在这里设置打印页数。要设置打印页数,可以调用CPrintInfo::SetMaxPage(nMaxPage)。同时还将预览页数也设置为两页。
BOOL CDrawView::OnPreparePrinting(CPrintI

打印和打印预览 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xxj16588
  • 文件大小19 KB
  • 时间2018-06-27