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