第11章打印与打印预览
第11章 打印与打印预览
1.打印的基础知识 2.打印的基本流程 3.控制打印过程 4.打印及打印预览实例
1. 打印的基础知识 2. 打印的基本流程 3. 控制打印过程 4. 打印及打印预览实例
打印基础知识 生成支持打印的应用程序 向导的第4步不取消打印、打印预览设置 生成的应用程序包含打印、打印预览、打印设置三个菜单,打 印与显示过程都会调用 Ondraw函数 2.基本机制 显示: WM PAINT消息→调用消息响应函数 OnPaint→调用 On draw函数,传递显示设备上下文 打印:选中打印菜单→调用 On Print→调用 On draw函数,传递 打印设备上下文 打印预览:选中菜单→调用 On Print-→调用 On Draw函数,传递 CPreviewDo对象
打印基础知识 1. 生成支持打印的应用程序 • 向导的第4步不取消打印、打印预览设置 • 生成的应用程序包含打印、打印预览、打印设置三个菜单,打 印与显示过程都会调用OnDraw函数 2. 基本机制 • 显示:WM_PAINT消息→调用消息响应函数OnPaint→调用 OnDraw函数,传递显示设备上下文 • 打印:选中打印菜单→调用OnPrint→调用OnDraw函数,传递 打印设备上下文 • 打印预览:选中菜单→调用OnPrint→调用OnDraw函数,传递 CPreviewDC对象
打印的基本流程 被框架所调用的函数 推荐的应重载的功能 CMy View: On Printing设置文档的页数:调用 DoPreparePrinting弹出打 印对话框并创建打印设备上下文 CMy View: On Begin Printing如果没有设置文档页数,可以在此处设置:创 建打印过程中使用的GD对象 CDC. Start Doc CMy View On Prepare DC 设置视图原点、映射模式等设备上下文属性 如果 文档长度未知,检测是否已到文档尾部 CMy View:: On Print 调用 On Draw函数输出屏幕中所显示内容:定制 输出页眉、页脚或其它内容 CDC: End Page DC- End Doc CMy View: On End Printing 释放 On Begin Printing中创建的GD资源
打印的基本流程 被框架所调用的函数 CMyView::OnPreparePrinting 推荐的应重载的功能 设置文档的页数;调用DoPreparePrinting弹出打 印对话框并创建打印设备上下文 CMyView::OnBeginPrinting 如果没有设置文档页数,可以在此处设置;创 建打印过程中使用的GDI对象 CDC::StartDoc CMyView::OnPrepareDC CDC::StartPage CMyView::OnPrint CDC::EndPage CDC::EndDoc CMyView::OnEndPrinting 设置视图原点、映射模式等设备上下文属性; 如果文档长度未知,检测是否已到文档尾部 调用OnDraw函数输出屏幕中所显示内容;定制 输出页眉、页脚或其它内容 释放OnBeginPrinting中创建的GDI资源
控制打印过程 CPrintInfo类对象贯穿在整个打印过程中,保存打印任务的信息(起 始页、当前页、页码格式等),是应用程序框架与视图类交换打印信 息的重要途径 2.打印时,应用程序框架调用 On PrparePrinting,调用 DoPreparePrinting 以弹出打印对话框,设置 CPrintInfo的 Im dIrect为TRUE,将不显示打 印对话框,可通过设置 CPrintInfo对象的成员变量,设置打印对话框 的初始值,如打印页码范围等 3.对每一打印页,框架将调用 On PrepareD,再调用 On Print CPrintInfo的 m n CurPage标识当前所打的页 可在 On PrepareD中设置合适的映射模式、视图原点 设置 CPrintInfo的 m bContinue printing为 FALSE可终止打印 4. On Print输出打印内容,可直接调用 On Draw函数,打印当前显示内容, 也可调用GD函数输出与显示不同的内容,所需的GD资源可考虑在 On Beigan Printing中创建,在 On Print中选中并完成输出,在 On EndPrinting中释放
控制打印过程 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中释放