SDI程序的窗口切分与一档多视实践

需积分: 9 3 下载量 125 浏览量 更新于2024-08-20 收藏 3.34MB PPT 举报
"本资源主要讲解了SDI(单文档界面)视图的学习,包括SDI程序的窗口静态切分和一档多视编程实例,旨在帮助学习者理解如何在Windows程序设计中实现复杂的用户界面。作者为于东,内容源于2014年的第十一周课程。" 在Windows程序设计中,SDI(Single Document Interface)程序设计模式允许用户在一个窗口中处理单一文档。然而,为了实现更复杂的功能和提供多样化的显示方式,通常需要对SDI程序的窗口进行切分,创建多个视图(View)来展示不同的数据或表达方式。 1. **SDI程序的窗口切分** SDI程序默认只有一个窗口和视图对象,但通过窗口切分,可以将窗口分割成两个或更多的子窗口,每个子窗口对应一个独立的视图。这样做不仅可以丰富界面,还能实现多角度、多层次的数据展示。例如,一个文档类可以对应多个视图,每个视图负责显示数据的不同方面或使用不同的显示样式。 2. **一档多视的概念** 在SDI中,尽管只有一个文档类,但可以有多个视图与其关联。文档作为数据存储,而多个视图则用于以不同的方式呈现这些数据,或者将数据拆分成多个部分,分别在各自的视图中显示。数据更新的同步机制类似于Dlg程序中的UpdateData函数,但在SDI程序中,文档类通过调用UpdateAllViews函数通知所有视图更新数据,其中的lHint参数可以用来识别需要更新的具体视图。 3. **一档多视的数据流** 当SDI程序中有多个视图时,数据更新通常由发现变化的视图触发,调用GetDocument->UpdateAllView,文档会更新数据,然后调用所有视图的OnUpdate函数进行视图更新。通过lHint参数的传递,可以精确控制哪些视图需要执行特定的更新操作。 4. **SDI程序的窗口静态切分与一档多视编程实例** 实例中,通过在MainFrm(主框架)中进行编程,将主窗口划分为左右两部分,每部分使用不同的视图类。MainFrm作为所有视图的容器,对它的修改直接影响到视图的布局。要实现不同视图,可以创建新的视图类,如添加CW9_1EditView和FormView类。添加新视图类通常通过向项目中添加新类并选择相应的基类(如CView或FormView)来完成。 5. **编程步骤** - **Step1**:首先创建一个基于CView的基本SDI程序。 - **Step2**:通过Ctrl+W添加新视图类,如CW9_1EditView。 - **Step3**:接着,通过Ctrl+R插入一个FormView对话框,可以修改其ID并添加新类。 通过以上步骤和实例,学习者能够掌握如何在SDI程序中实现窗口切分和一档多视,从而构建更加灵活和功能丰富的用户界面。这种技术在开发多面板、多功能的Windows应用程序时非常有用。