第 11章 打印与打印预览
1,打印的基础知识
2,打印的基本流程
3,控制打印过程
4,打印及打印预览实例打印基础知识
1,生成支持打印的应用程序
向导的第 4步不取消打印、打印预览设置
生成的应用程序包含打印、打印预览、打印设置三个菜单,打印与显示过程都会调用 OnDraw函数
2,基本机制
显示,WM_PAINT消息 → 调用消息响应函数 OnPaint→ 调用
OnDraw函数,传递显示设备上下文
打印:选中打印菜单 → 调用 OnPrint→ 调用 OnDraw函数,传递打印设备上下文
打印预览:选中菜单 → 调用 OnPrint→ 调用 OnDraw函数,传递
CPreviewDC对象打印的基本流程被框架所调用的函数
CMyView::OnPreparePrinting
推荐的应重载的功能设置文档的页数;调用 DoPreparePrinting弹出打印对话框并创建打印设备上下文
CMyView::OnBeginPrinting 如果没有设置文档页数,可以在此处设置;创建打印过程中使用的 GDI对象
CDC::StartDoc
CMyView::OnPrepareDC
CDC::StartPage
CMyView::OnPrint
CDC::EndPage
CDC::EndDoc
CMyView::OnEndPrinting
设置视图原点,映射模式等设备上下文属性;
如果文档长度未知,检测是否已到文档尾部调用 OnDraw函数输出屏幕中所显示内容;定制输出页眉,页脚或其它内容释放 OnBeginPrinting中创建的 GDI资源控制打印过程
1,CPrintInfo类对象贯穿在整个打印过程中,保存打印任务的信息(起始页、当前页、页码格式等),是应用程序框架与视图类交换打印信息的重要途径
2,打印时,应用程序框架调用 OnPrparePrinting,调用 DoPreparePrinting
以弹出打印对话框,设置 CPrintInfo的 m_bDirect为 TRUE,将不显示打印对话框,可通过设置 CPrintInfo对象的成员变量,设置打印对话框的初始值,如打印页码范围等
3,对每一打印页,框架将调用 OnPrepareDC,再调用 OnPrint
CPrintInfo的 m_nCurPage标识当前所打的页
可在 OnPrepareDC中设置合适的映射模式、视图原点
设置 CPrintInfo的 m_bContinuePrinting为 FALSE可终止打印
4,OnPrint输出打印内容,可直接调用 OnDraw函数,打印当前显示内容,
也可调用 GDI函数输出与显示不同的内容,所需的 GDI资源可考虑在
OnBeiginPrinting中创建,在 OnPrint中选中并完成输出,在
OnEndPrinting中释放
1,创建支持打印、打印预览的应用程序
2,设置合适的映射模式(显示器与打印机分辨率的差异)
3,输出多页的文档内容
4,在 OnBeiginPrinting中计算并设置文档的页数,调用 GetDeviceCaps获得打印机设备上下文属性,调用 CPrintInfo的 SetMaxPage和
SetMinPage设置页码范围
5,为每一打印页设置合适的视图原点,可用 IsPrinting判断是否为打印或打印预览过程
6,在 OnPrint函数中,除了调用 OnDraw函数外,调用 GDI函数打印标题、
页码等内容
7,设置 CPrintInfo成员变量,改变打印预览中页码的显示方式打印及打印预览实例