MFC:深入理解单文档与多文档界面

5星 · 超过95%的资源 需积分: 43 269 下载量 116 浏览量 更新于2024-07-31 6 收藏 281KB PDF 举报
"MFC中单文档与多文档使用总结" 在Microsoft Foundation Classes (MFC)框架中,设计了两种主要的用户界面模式:单文档界面(Single Document Interface, SDI)和多文档界面(Multiple Document Interface, MDI)。这两种模式在处理用户交互和文档管理上有所不同。 1. 单文档界面(SDI) SDI应用程序通常只有一个窗口,用户一次只能处理一个文档。在这种结构中,CMainFrame类的基类是CFrameWnd。创建SDI应用程序时,不会生成CChildFrame类,因为不需要子窗口来显示多个文档。SDI应用程序简单且直观,适用于处理单个文件或数据集的情况。 2. 多文档界面(MDI) MDI应用程序允许用户同时打开和操作多个文档,每个文档有自己的窗口,这些窗口是CMDIChildWnd类的实例。当创建MDI应用程序时,CMainFrame类的基类会改为CMDIFrameWnd。每当打开新文档时,系统会自动调用CDocument的OnNewDocument函数,创建一个新的MDI子窗口以显示文档。这种模式适合需要同时查看和编辑多个文件的场景。 3. 文档/视图结构 在MFC中,数据管理和用户界面是通过文档/视图结构实现的。文档类(如CDocument)负责存储和管理数据,视图类(如CView)则负责显示和处理用户交互。数据的持久化是通过文档的串行化功能,将数据保存到磁盘文件或数据库中。 视图与文档之间的通信非常关键。视图可以直接或间接访问文档类的成员变量,从文档中读取或写入数据,而不需要直接与存储介质交互。视图作为中介,将用户的修改通过接口传递给文档,由文档负责实际的数据更新。此外,文档类还可以处理来自菜单、工具栏按钮和加速键的WM_COMMAND消息。 命令消息的处理在MFC中具有灵活性,不仅可以由窗口和视图处理,还可以由文档、文档模板或应用程序本身处理。这与Windows消息和控件通知消息的处理方式不同,后者通常仅限于窗口和视图。 总结来说,MFC中的SDI和MDI提供了两种不同的用户界面策略,以适应不同的应用程序需求。SDI适合单文件操作,而MDI则适用于多文件并行处理的场景。文档/视图结构是MFC的核心设计模式,确保了数据和界面之间的高效协调。在开发MFC应用程序时,理解这些概念对于构建用户友好且功能强大的桌面应用程序至关重要。