VisualC++程序设计基础课件作者刘加海主编应潇潇黄崇本余建军副主编第2章节.pptVIP

  • 0
  • 0
  • 约3.94千字
  • 约 29页
  • 2017-11-12 发布于广东
  • 举报

VisualC++程序设计基础课件作者刘加海主编应潇潇黄崇本余建军副主编第2章节.ppt

第2章 文档与视图 2.1 文档与视图结构 文档是存储数据的对象。视图类的作用是与用户进行交互。档类与视图类的关系如下图所示。 2.2 单文档(SDI)应用程序 应用程序使用两种方法显示数据:单文档(SDI)和多文档(MDI)。在单文档界面中,一次只能打开一个文件。 单文档应用程序中,主要的四个类(假如工程名为DocView): l???????? 主框架类:CMainFrame用于管理主程序窗口,从MFC类的CFrameWnd派生。 l???????? 应用类:CDocViewApp负责程序初始化及程序结束前的整理工作,从MFC类的CWinApp派生。 l???????? 文档类:CDocViewDoc负责存放程序数据和在磁盘上读写数据,从MFC类的CDocument派生。 l???????? 视图类:CDocViewView负责数据的显示及处理用户的输入,从MFC类的CView派生。 文档类CDocument中的主要函数: l???????? UpDateAllviews():更新所显示的数据。 l???????? OnNewDocument(): 建立新文档。 l???????? OnOpenDocument():打开文档。 视图类CView中的主要函数: l?????? OnInitialUpdate():对视图对象进行初始化。 l???????OnDraw():窗口重新绘制。 l? GetDocument():调用此函数就可以取得CDocument类的对象指针。 OnUpdate():对文档进行访问。 2.3 多文档应用程序 2.3.1 多文档(MDI)应用程序的基本概念 多文档(MDI)的应用程序具有一个窗口,此窗口可以有多个MDI子窗口,因而对多文档应用程序一次可以打开多个文档。 MDI应用程序由下面几个部分组成: l???????? MDI主框架窗口 l???????? MDI客户端窗口 l???????? MDI子窗口 2.3.2 创建MDI应用程序 在“文件”(File)—“新建”(New) —“工程”(Projects) —MFC AppWizard(exe),在“工程名”(Project name)栏中输入程序名称MDoc,单击“确定”(OK)按钮。在AppWizard的各个步骤中依次进行如下设置:步骤1:选中Multiple documents单选按钮,如图2.3所示。 步骤2:接受系统默认设置。 步骤3:去掉复选框ActiveX Controls,其他设置接受系统默认值。 步骤4:去掉复选框Printing and print preview,其他设置接受系统默认值。 步骤5:接受系统默认设置。 步骤6:接受系统默认设置,单击“完成”(Finish)按钮结束AppWizard的设置。 对生成的应用程序进行编译和运行,执行的结果如下图所示。 当选择“文件”—“新建”命令,将会出现一个名为MDoc2的子窗口对象。通过窗口菜单可以在各个子窗口中进行切换显示,如下图所示。 2.4 文档中数据的处理 会涉及到两个问题: l???????? 如何在窗口中输入文字? l???????? 如何保存输入的数据,使得窗口重画时字符不消失? 下面的例子中,将创建一个简单的SDI应用程序,操作步骤如下: 步骤1:在Visual C++的“文件”菜单栏中选择“新建”菜单命令,弹出“新建”对话框,选中“工程”选项卡。在项目列表中选中MFC AppWizard(exe)选项,在“工程名”编辑框中输入工程的名称,在这里输入SDI,单击OK按钮继续。 步骤2:在AppWizard的各个步骤中,依次进行如下设置。 (1)选择“S单个文档”(Single document)单选按钮,其他设置接受系统默认值。 (2)接受系统默认设置。 (3)去掉复选框“R ActiveX控件”(ActiveX Controls),其他设置接受系统默认值。 (4)去掉复选框“P打印和打印预览”(Printing and print preview),其他设置接受系统默认值。 (5)接受系统默认设置。 (6)接受系统默认设置;最后创建的工程信息,单击“确定”(OK)按钮继续。 步骤3:到此为止,我们已经创建了一个基于MFC类库的应用程序框架。编译、链接此程序,将得到一个空白的窗口,如下图所示,它不能做任何事情。 步骤4:在单文档应用程序中响应键盘输入与显示字符。 (1)在视图类CSDIView中添加数据成员。 在视图类中添加两个成员变量: protected: int m_nLine;//用来记录已输

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档