"Visual C++2010入门经典第19章主要讲解了如何在MFC应用程序中实现文档的存储和打印功能,包括序列化技术的原理和应用,以及打印支持的相关知识点。"
在MFC(Microsoft Foundation Classes)框架中,开发Windows应用程序时经常会遇到需要保存和恢复用户数据的情况。本章的重点是解决这个问题,介绍了一个关键的概念——序列化,它是MFC提供的一种高效且安全的方法,用于将复杂类对象的数据存储到文件并从文件中恢复。
19.1 了解序列化
序列化是处理类对象持久化的一种方法,允许将对象的状态转换为字节流,以便于存储或在网络上传输。由于类对象通常包含不止基础数据类型,还包含成员函数和不同访问级别的数据成员,直接写入文件会很复杂。MFC通过引入序列化机制,使得类对象能自定义其存储和恢复的过程。要实现序列化,类必须继承自`CObject`类,并实现`Serialize`函数,这样类的实例就能在磁盘上保存和读取。
19.2 序列化文档
在Sketcher应用程序中,文档通常包含多个层次的对象,如CElement类及其派生的形状类。为了使这些类可序列化,它们的基类需要声明为`Serializable`,并且每个类都需要提供自己的`Serialize`函数。`Serialize`函数通过`CArchive`对象来执行实际的序列化操作,`CArchive`提供了写入和读取数据到文件的接口。
19.3 打印支持
除了序列化,本章还涵盖了打印功能的实现。在MFC中,支持打印通常涉及到使用视图类(如`CView`)的函数,如`OnDraw`,以及`CPrintInfo`对象。`CPrintInfo`包含了关于打印作业的详细信息,如页范围、页数等,用于控制打印过程。为了实现多页打印,应用程序需要正确地处理每一页的边界和内容,确保数据正确地分页和绘制。
在Sketcher应用程序中,实现多页打印可能涉及到计算每个页面的布局,以及如何在不同的页面上分布和重绘文档元素。这通常通过覆盖视图类的打印相关的虚函数来完成,如`OnPreparePrinting`、`OnPrint`等,以确保在打印过程中正确地呈现文档内容。
本章详细阐述了如何在Visual C++ 2010环境中利用MFC的序列化技术保存和加载复杂文档,以及如何实现打印功能,使得应用程序不仅能够持久化用户的工作,还能将内容输出到物理媒介,如纸质文档。通过掌握这些技术,开发者可以构建出功能完善的桌面应用程序,满足用户的数据存储和打印需求。