1 / 51
文档名称:

VC++面向对象与可视化程序设计.ppt

格式:ppt   页数:51
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

VC++面向对象与可视化程序设计.ppt

上传人:化工机械 2012/4/14 文件大小:0 KB

下载得到文件列表

VC++面向对象与可视化程序设计.ppt

文档介绍

文档介绍:第 11章单文档与多文档
本章主要介绍Visual C++中的文档/视图结构的工作机制
1
概述
2

VC的MFC库支持三种不同的应用程序
单文档界面(SDI)
多文档界面(MDI)
基于对话框的应用程序
SDI的应用程序
只有一个窗口
MDI的应用程序每次
可以读写多个文件或
文档,可同时对多个
文档进行操作,可以
有多个子窗口
主要差别
在创建SDI界面的应用程序时,hildFrame类,CMainFrame类的基类为CFrameWnd
在创建MDI界面的应用程序时,CMainFrame类的基类为CMDIFrameWnd
使用AppWizard创建SDI和MDI界面的应用程序的过程几乎完全一样
3
由于每一个文档可以有多个视图,但每个视图只能对应于一个确定的文档
多文档程序需要解决的问题仅仅是多个文档的数据管理方法的问题
多文档程序,最初的文档模板只支持主窗口,但每次打开一个新文档时都调用CDocument的函数OnNewDocument,建立一个由CMDIChildWnd派生的新的MDI子窗口,这些窗口中保存着各种已打开的文档,所有的细节都由MFC库处理
视图是文档的不同表现形式,一个*.html
语言的文件,在浏览器里和在记事本中打
开的表现形式是不同的但它们操作的是同
一个文件这就是一个文档对应两视图
4
文档/视图结构
在文档/视图结构中
对数据进行管理和维护,数据保存在文档类的成员变量中
文档类通过串行化
的过程将数据保存
到磁盘文件或数据库中
文档类还可处理来自如
菜单、工具栏按钮和加
MAND消息
MAND外,文档不
能处理其它的Windows消息
由此我们可以看出,命令消息可以被多种对象处理,这些对象除了窗口和视图外,还可以是文档、文档模板或应用程序本身
这一点与Windows消息
和控件通知消息不同,
因为Windows消息和控
件通知消息就只能被
窗口和视图处理。
通过调用文档和视图的接口将修改的信息反馈给文档类,实际的数据更新仍然是由文档来完成的
在文档和用户之间起中介作用
视图可以直接或间接
的访问文档类中的成
员变量,它从文档类
中(而不是从存储介质
中)将文档中的数据取
出来,然后在屏幕上
显示文档的数据
它可以接收用户的输入
,并接受用户的修改
5
文档/视图结构的工作机制
视图通过GetDocument成员函数获得指向相关联的文档对象的指针
通过该指针调用文档类的成员函数来从文档中读取数据
视图把数据显示于计算机屏幕上
用户通过与视图的交互来查看数据并对数据进行修改
视图通过相关联的文档类的成员函数将经过修改的数据传递给文档对象
文档对象获得修改过的数据之后,对其进行必要的修改,最后保存到永久介质(如磁盘文件)中
6
SDI文档/视图应用程序示意图
7
SDI程序中文档、视图对象的创建过程
SDI程序中框架窗口、文档和视图的创建是在应用程序对象的InitInstance()成员函数中通过文档模板类完成的:CSingleDocTemplate * pDocTemplate; //创建单文档模板类对象pDocTemplate = new CSingleDocTemplate
(IDR_MAINFRAME,
RUNTIME_CLASS (CMyDoc), //CMyDoc是应用程序中的文档类
RUNTIME_CLASS (CMainFrame), //CMainFrame是应用程序中的框架窗口
RUNTIME_CLASS (CMyView) ); //CMyView是应用程序中的视图类AddDocTemplate(pDocTemplate); //加载文档模板类对象到文档模板列表

CCommandLineInfo cmdInfo;
mandLine(cmdInfo); //mandLineInfo对象
if(! mand(cmdInfo)) //据对象中的信息启动程序
return FALSE;
m_pMainWnd -> ShowWindow(SW_SHOW);
m_pMainWnd -> UpdateWindow(); //显示和更新窗口
8
SDI程序的消息传递过程
当用户选择了菜单项,单击了快捷键或工具条按钮,MAND消息。MAND消息的接受者,MAND消息还可以在视图、文档,甚至应用程序类中被处理。
9
Doc/View框架的主要成员
Doc/View框架虽然可以调用成百上千个不同的类,但是核心类只有五个:
CWinApp
CDocument
CView
CDocTempla