visual c 实用教程 第12章:基于文档/视图结构的程序.ppt
合集下载
Visual Basic程序设计电子课件——第12章 数据库应用基础

(5)单击“显示”按钮,即可查看到SQL 查询语句,还可以复制、保存、清除查询。
18
12.3 数据控件的使用
1 . 数据控件概述
在Visual Basic中提供了两种与Jet数据库引擎
接口的方法,一种是Data控件,另一种是DAO对
第 十
象。
二
Visual Basic通过DAO和Jet引擎可以访问3类
6.0(OLEDB)”复选框,单击“确定”按钮。
第
(2)添加控件。分别添加Adodc控件和
十
二 DataGrid控件到窗体中,调整其大小,并设置
章 Adodc的Caption属性为“学生信息表”,设计的
窗体如下图所示。
32
第 十 二 章
33
(3)设置Adodc控件连接字符串。 ① 单击Adodc控件ConnectionString属性的 符号“…”,出现Adodc“属性页”对话框。 第 十 二 章
第
十
按学生信息表,在C盘根目录新建名为
二 章
Student.mdb的Access数据库,在该数据库中新建
表Stu,并将学生信息存入该表中,得到学生信息
表的结构 。
25
学生信息表
学号 姓 性 班级 生日 宿
电话
QQ
名别
舍
30521001 赵 男 管理 1988-8-8 一舍 86680011 12345678
第 的底部。当窗体大小改变时,该控件的长度也会随
十 之变化,但仍然位于窗体的底部。
二 章
(2)Caption——设置Data控件的标题。常用
来显示数据库记录指针的位置、数据库中的记录个
数等信息。
20
(3)Connect——指定所要连接数据库的类 型。其格式如下:
18
12.3 数据控件的使用
1 . 数据控件概述
在Visual Basic中提供了两种与Jet数据库引擎
接口的方法,一种是Data控件,另一种是DAO对
第 十
象。
二
Visual Basic通过DAO和Jet引擎可以访问3类
6.0(OLEDB)”复选框,单击“确定”按钮。
第
(2)添加控件。分别添加Adodc控件和
十
二 DataGrid控件到窗体中,调整其大小,并设置
章 Adodc的Caption属性为“学生信息表”,设计的
窗体如下图所示。
32
第 十 二 章
33
(3)设置Adodc控件连接字符串。 ① 单击Adodc控件ConnectionString属性的 符号“…”,出现Adodc“属性页”对话框。 第 十 二 章
第
十
按学生信息表,在C盘根目录新建名为
二 章
Student.mdb的Access数据库,在该数据库中新建
表Stu,并将学生信息存入该表中,得到学生信息
表的结构 。
25
学生信息表
学号 姓 性 班级 生日 宿
电话
名别
舍
30521001 赵 男 管理 1988-8-8 一舍 86680011 12345678
第 的底部。当窗体大小改变时,该控件的长度也会随
十 之变化,但仍然位于窗体的底部。
二 章
(2)Caption——设置Data控件的标题。常用
来显示数据库记录指针的位置、数据库中的记录个
数等信息。
20
(3)Connect——指定所要连接数据库的类 型。其格式如下:
Visual C 程序的设计教程第12章-PPT文档资料

12.1.2 串行通信的操作方式
下面介绍串行通信的几种操作方式: 1.同步方式 同步方式中,读串口的函数试图在串口的接收缓冲区中读取规定数目的数据,直 到规定数目的数据全部被读出或设定的超时时间已到时才返回。 2.查询方式 查询方式,即一个进程中的某一线程定时地查询串口的接收缓冲区,如果缓冲区 中有数据,就读取数据;若缓冲区中没有数据,该线程将继续执行,因此会占用 大量的CPU时间,它实际上是同步方式的一种派生。 3.异步方式 异步方式中,利用Windows的多线程结构,可以让串口的读写操作在后台进行, 而应用程序的其他部分在前台执行。 4.事件驱动方式 若对端口数据的响应时间要求较严格,可采用事件驱动方式。事件驱动方式通过 设置事件通知,当所希望的事件发生时,Windows发出该事件已发生的通知,这 与DOS环境下的中断方式很相似。
12.1.3 单线程与多线程下的串口通信
通常可按以下四步实现串行通信: 按协议的设置初始化并打开串行口,这样做就是通知 Windows本应用程序需要这个串口,并封锁其他应用 程序使它们不能使用此串口。 配置这个串口。 在串口上往返地传输数据,并在传输过程中进行校验。 不需要此串口时,关闭串口。即释放串口以供其它应 用程序使用。 在这四个步骤中,主要的程序代码集中在第(3)步。
12.2.4 串口的写操作
在串口配置成功后,下一步就可以进行读/写串口 的操作了。写串口程序相对比较简单,调用WriteFile ()函数就可以实现。函数调用的一个例子如下: WriteFile(hCom1,out,length,&nToWrite,&o); 其中hCom1是串口的句柄,out为指向存储写入数据 的缓冲区,length表示要发送ห้องสมุดไป่ตู้数据长度,nToWrite 为实际写入的字节数,&o为指向一个OVERLAPPED 结构,使数据的写操作在后台进行。
Visual C程序设计基础教程与上机指导课件第12课

概述
学习目标
1,熟悉菜单的概念; 2,掌握菜单资源的创建; 3,掌握菜单项操作; 3 4,掌握菜单资源的动态创建; 5,掌握键盘加速键的设定; 6,熟悉应用程序举例;
/webnew/
概述
学习重点
1,菜单资源的创建; 2,菜单项操作; 3,键盘加速键; 3
�
菜单项操作
1,禁止和激活菜单项; 2,设置取消和选中标志; 3,增加菜单项; 4,删除菜单项; 5,修改菜单项;
/webnew/
小结
1,禁止和激活菜单项的函数原型; 2,设置取消和选中标志的方法; 3,增加菜单项的两种操作方法; 4,删除菜单项的方法; 5,修改菜单项的方法;
综合练习
编写一个应用程序,创建一个菜单,包含 3个弹出式菜单,它们分别为"文件", "编辑","帮助";
/webnew/
总结
掌握Windows程序菜单资源的设定和使用,熟 练定制应用程序的菜单和加速键.
/webnew/
/webnew/
应用程序举例
创建两个弹出式菜单"文件"和"编辑";
/webnew/
小结
创建两个弹出式菜单"文件"和"编辑"的具 体过程;
/webnew/
学习难点
1,菜单资源的创建; 2,菜单资源的动态创建; 3,键盘加速键;
/webnew/
菜单的概念
窗口的菜单栏在标题栏下面,一般我们把这个 菜单栏称为"主菜单";
/webnew/
小结
介绍菜单的组成与操作;
/webnew/
菜单资源的动态创建
(1)利用CreateMenu函数创建一个空的弹出 式菜单; (2)调用函数AppendMenu或InsertMenu在菜 单中加入菜单项;
《Visual Foxpro 6.0程序设计基础教程》课件第12单元 全国计算机等级考试

② 即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。
Visual FoxPro 6.0 程序设计基础教程
2.二分法查找 二分法查找,也称拆半查找,是一种高效的查找方法。能使用二分法查找 的线性表必须满足用顺序存储结构和线性表是有序表两个条件。
五、树与二叉树 1.二叉树及其基本概念
Visual FoxPro 6.0 程序设计基础教程
图12-1
2.二叉树基本性质
Visual FoxPro 6.0 程序设计基础教程
性质1:在二叉树的第k层上,最多有2k-1(k≥l)个结点。 性质2:深度为m的二叉树最多有2m-1 个结点。 性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的 结点多一个。 性质4:具有n个结点的二叉树,其深度至少为[log2n]+l,其中[log2n] 表示取log2n 的整数部分。
上的关系,它反映了数据元素之间的前后件关系,通常记为R。
Visual FoxPro 6.0 程序设计基础教程
3.存储结构 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构
(也称数据的物理结构)。
常用的存储结构有顺序、链接等。
用于线性的数据结构,它把逻辑 上相邻的数据元素存储在物理上相 邻的存储单元里,结点之间的关系 由存储单元的邻接关系来体现。
在每个结点中至少包含一个 指针域,用指针来体现数据元 素之间逻辑上的联系。
Visual FoxPro 6.0 程序设计基础教程
三、线性表及其顺序存储结构 数据结构分为两大类型:线性结构与非线性结构。
(1)如果一个非空的数据结构满足下列两个条件: ① 有且只有一个根结点; ② 每一个结点最多有一个前件,也最多有一个后件。
Visual FoxPro 6.0 程序设计基础教程
2.二分法查找 二分法查找,也称拆半查找,是一种高效的查找方法。能使用二分法查找 的线性表必须满足用顺序存储结构和线性表是有序表两个条件。
五、树与二叉树 1.二叉树及其基本概念
Visual FoxPro 6.0 程序设计基础教程
图12-1
2.二叉树基本性质
Visual FoxPro 6.0 程序设计基础教程
性质1:在二叉树的第k层上,最多有2k-1(k≥l)个结点。 性质2:深度为m的二叉树最多有2m-1 个结点。 性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的 结点多一个。 性质4:具有n个结点的二叉树,其深度至少为[log2n]+l,其中[log2n] 表示取log2n 的整数部分。
上的关系,它反映了数据元素之间的前后件关系,通常记为R。
Visual FoxPro 6.0 程序设计基础教程
3.存储结构 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构
(也称数据的物理结构)。
常用的存储结构有顺序、链接等。
用于线性的数据结构,它把逻辑 上相邻的数据元素存储在物理上相 邻的存储单元里,结点之间的关系 由存储单元的邻接关系来体现。
在每个结点中至少包含一个 指针域,用指针来体现数据元 素之间逻辑上的联系。
Visual FoxPro 6.0 程序设计基础教程
三、线性表及其顺序存储结构 数据结构分为两大类型:线性结构与非线性结构。
(1)如果一个非空的数据结构满足下列两个条件: ① 有且只有一个根结点; ② 每一个结点最多有一个前件,也最多有一个后件。
visual c 实用教程 第12章:基于文档/视图结构的程序.ppt

➢
CCommandLineInfo cmdInfo;
➢
ParseCommandLine(cmdInfo);
➢ ……
➢}
➢ 上述两行加黑的代码的功能就是实现某种类型的文件与某个应用程序关联的语句,有了它就能在双 击某种类型的文件时,调用相应的应用程序把其打开。
图(二)
Visual C++
图12.3 MyEditor的运行界面
Visual C++
第12章 基于文档/视图结构的程序
12.1 文档/视图结构 12.2 框架——视图的容器 12.3 文档——管理和组织数据 12.4 视图——显示文档数据,提供用户接口 习题
12.1
Visual C++
文档/视图结构
❖ 文档/视图结构是在VC中使用MFC开发基于文档应用程序的基本 框架,在这个框架中,数据的维护及其显示分别由两个不同的,但又 彼此紧密相关的对象——文档和视图负责的。文档对象通常代表应用 程序中打开的一个文件,而视图窗口则提供了该文档对象中数据的可 视化表示形式并接收用户的交互。文档和视图关系是一对多的关系, 即一个文档可以对应多个视图(如一个Word文档有大纲视图、页面视 图、Web板式视图等),但一个视图只能对应一个文档。
➢ ⑤ 对话框类CAboutDlg是从CDialog派生来的,该对话框类显示一个简单的版本信息 的“关于”对话框。对话框类的说明前面有一章已经专门讲解了。
【例12-1】(续)
Visual C++
➢ (3) 运行SDI应用程序
➢ 编译并运行上述程序的显示结果如图12.3所示。在客户区中输入一些文本,然后保存。再新建一个, 刚才所输入内容的文件已经关闭。这是一个典型的单文档应用程序,看它是否和记事本程序的功能类 似。
(最新整理)VisualC++使用方法详细介绍ppt(共75页)

• Workspace(工作空间)窗口 • Output(输出)窗口 • 编辑窗口 • 调试窗口
2021/7/26
16
工作空间窗口
Workspace窗口显示了项目各个方面的信息。在 窗口底端选择相应的选项卡来按不同视图显示项 目的列表。
• ClassView:列出项目中的类和成员函数。双 击列表中的类或函数,即可在Visual C++文 本编辑器中打开该类的源文件。
还有一些常用的设置:Customize,Options。
2021/7/26
10
[Windows]窗口菜单
[Windows]菜单主要工能如下:
1、New Window新建一个窗口,内容与当前窗口同 。
2、Split 分割当前窗口成四个,内容全相同。
3、Docking View控制当前窗口是否成为浮动视图。
在程序运行时, Visual C++ 6.0的菜单栏可以动态改变,还 有[Layout]和[Debug]。
如在调试状态下, [Build]变成了[Debug]。
2021/7/26
3
[File]文件菜单
[File]菜单共有14选项,分成6组:
1、[New]新建一个一般文件,工程,工作区,其他文档。 [Open]打开、[Close]关闭 2、Workspace工作区操作,打开、保存和关闭工作区。 3、有三个菜单项,用于文件保存。 4、有二个菜单项,用于文件打印。 5、用于打开以前打开过的文件或工作区。 6、一个菜单项Exit,用于退出Visual C++ 6.0。
2021/7/26
13
Visual C++组件一览
• Developer Studio开发环境 • 编辑器 • 编译器 • 链接器 • Wizard实用程序 • 调试器 • 其他实用工具
2021/7/26
16
工作空间窗口
Workspace窗口显示了项目各个方面的信息。在 窗口底端选择相应的选项卡来按不同视图显示项 目的列表。
• ClassView:列出项目中的类和成员函数。双 击列表中的类或函数,即可在Visual C++文 本编辑器中打开该类的源文件。
还有一些常用的设置:Customize,Options。
2021/7/26
10
[Windows]窗口菜单
[Windows]菜单主要工能如下:
1、New Window新建一个窗口,内容与当前窗口同 。
2、Split 分割当前窗口成四个,内容全相同。
3、Docking View控制当前窗口是否成为浮动视图。
在程序运行时, Visual C++ 6.0的菜单栏可以动态改变,还 有[Layout]和[Debug]。
如在调试状态下, [Build]变成了[Debug]。
2021/7/26
3
[File]文件菜单
[File]菜单共有14选项,分成6组:
1、[New]新建一个一般文件,工程,工作区,其他文档。 [Open]打开、[Close]关闭 2、Workspace工作区操作,打开、保存和关闭工作区。 3、有三个菜单项,用于文件保存。 4、有二个菜单项,用于文件打印。 5、用于打开以前打开过的文件或工作区。 6、一个菜单项Exit,用于退出Visual C++ 6.0。
2021/7/26
13
Visual C++组件一览
• Developer Studio开发环境 • 编辑器 • 编译器 • 链接器 • Wizard实用程序 • 调试器 • 其他实用工具
完整的VISIO教程ppt课件

Microsoft Visio是一款专业的流程图、组织结构图、UML图等矢量图形绘制 软件,广泛应用于企业、教育、科研等领域。
VISIO软件特点
提供丰富的形状库和模板,支持自定义形状和模板;具有强大的自动布局和排 版功能,可快速生成美观的图形;支持多人协作和版本控制,方便团队管理和 协作。
VISIO软件绘图工具使用
VISIO内置了众多形状库,涵盖了流程图、组 织结构图、UML图等多种图表类型,用户可 以直接拖拽使用。
智能的连接线
灵活的自定义功能
VISIO的连接线可以自动吸附到形状的连接点, 保证图表的整洁和美观。
VISIO支持用户自定义形状、模具和样式,满 足用户的特殊需求。
VISIO软件应用领域
01
02
03
VISIO流程图
使用Microsoft Visio软件 绘制的流程图,具有专业、 美观、易读等特点。
流程图元素
表示特定含义的图形符号, 如开始/结束符号、处理符 号、判断符号等。
VISIO软件流程图制作步骤
打开Microsoft Visio软件, 选择“流程图”模板。
在画布上添加所需的流程 图元素,如开始/结束符 号、处理符号、判断符号 等。
文本与格式
讲解如何在VISIO软件中添加和编辑文本,以及如何设置文本格式和 样式,包括字体、字号、颜色等。
VISIO软件绘图案例
流程图绘制
以一个简单的流程图为例,演示如何使用VISIO软件绘制流程图,包括添加流程图形状、设 置形状格式、添加连接线和文本等步骤。
组织结构图绘制
介绍如何使用VISIO软件绘制组织结构图,包括添加组织结构图形状、设置形状格式、添加 连接线和文本等步骤,以及如何调整组织结构的层次和布局。
VISIO软件特点
提供丰富的形状库和模板,支持自定义形状和模板;具有强大的自动布局和排 版功能,可快速生成美观的图形;支持多人协作和版本控制,方便团队管理和 协作。
VISIO软件绘图工具使用
VISIO内置了众多形状库,涵盖了流程图、组 织结构图、UML图等多种图表类型,用户可 以直接拖拽使用。
智能的连接线
灵活的自定义功能
VISIO的连接线可以自动吸附到形状的连接点, 保证图表的整洁和美观。
VISIO支持用户自定义形状、模具和样式,满 足用户的特殊需求。
VISIO软件应用领域
01
02
03
VISIO流程图
使用Microsoft Visio软件 绘制的流程图,具有专业、 美观、易读等特点。
流程图元素
表示特定含义的图形符号, 如开始/结束符号、处理符 号、判断符号等。
VISIO软件流程图制作步骤
打开Microsoft Visio软件, 选择“流程图”模板。
在画布上添加所需的流程 图元素,如开始/结束符 号、处理符号、判断符号 等。
文本与格式
讲解如何在VISIO软件中添加和编辑文本,以及如何设置文本格式和 样式,包括字体、字号、颜色等。
VISIO软件绘图案例
流程图绘制
以一个简单的流程图为例,演示如何使用VISIO软件绘制流程图,包括添加流程图形状、设 置形状格式、添加连接线和文本等步骤。
组织结构图绘制
介绍如何使用VISIO软件绘制组织结构图,包括添加组织结构图形状、设置形状格式、添加 连接线和文本等步骤,以及如何调整组织结构的层次和布局。
完整的VISIO教程 ppt课件

通过拖曳“ 组织结构图 形状” 模板的方法,可 在财务部经理的图形下 建立相关“职位”
第29页 共36页
6 常见图表类型
业务流程图
组织结构图
项目管理图
因果图
灵感激发图 统计、营销
图表
第30页 共36页
完整的VISIO教程
灵感触发图可以帮助您记录和制 定任何相关的想法或信息,例如: 新业务战略、图书提纲、会议纪 要或旅行计划等。
第24页 共36页
完整的VISIO教程
创建类似这个示例的图表非常容 易。各种形状已为您制作完毕 (在本示例中为流程图中的矩 形)。您要做的全部工作就是将 它们拖放就位,键入一些文本, 然后对其大小稍做调整。 其他需要说明的是:连接各个形 状的线条被称为“连接符”。连 接符可以方便地“粘附”到这些 形状上。当移动某个形状时,连 接符也会移动。
• 很多时候使用图形比使 用文字能够更好的表达 意思,更容易被其他人 理解。
• Visio是微软公司推出的 一款矢量绘图软件。该 软件提供了一个标准、 易于上手的绘图环境, 并配有整套范围广泛的 模板、形状和先进工具。
第7页 共36页
完整的VISIO教程
菜单栏
形状、模具 绘图区
第8页 共36页
工具栏 任务窗格
修改ASCP中计划单
信息;其它调整(说
明性信息)可填写发
布备注,供供应商进
行参考。
3、供应商需要在采购
结束
计划发布后48小时内 对采购计划进行反馈
和确认,超过48小
时,ISP系统将自动确
认该采购计划,即默
认供应商已接收到并
查看供应商反馈
已确认采购计划。
ISP:物料需求反 馈
4、本流程自下发之日 起执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12.1.1 VC开发的应用程序类型
12.1.2 文档/视图结构程序的主要组成类
12.1.3 从程序员角度看SDI与MDI应用程序
12.1.4 应用程序类
12.1.5 文档/视图结构优点
Visual C++
12.1.1 VC开发的应用程序类型
❖ 利用MFC应用程序向导可以开发三种类型的应用程序: ❖ 第一种是基于对话框的应用程序,上一章讲的对话框与控 件大部分是基于对话框的应用程序。 ❖ 第二种是基于SDI(Single Document Interface单文档接 口)的应用程序,其特点是用户一次只能打开一个文档,若已 经打开一个文档,想打开另一个文档时,必须关闭当前打开的 文档。 ❖ 第三种基于MDI(Multi Document Interfac多文档接口) 的应用程序,其特点是用户一次可以打开多个文档,若已经打 开一个文档,又想打开另一个文档时,不必关闭当前打开的文 档,它体现了Windows操作系统的多任务特点。
➢ 定位到应用程序类的InitInstance()函数中,可以看到下面的代码:
Visual C++
➢ BOOL CMyEditorApp::InitInstance()
➢{
➢ ……
➢
CSingleDocTemplate* pDocTemplate;
➢
pDocTemplate = new CSingleDocTemplate(
➢ ③ AppWizard的第二步使用缺省的选项,在第三步中主要选择如何支持复合档支持 文档的, 我们选择“Container”容器支持,如图12.5所示,完后按Next按钮。
➢ ④ AppWizard的第二步、第三步中使用缺省的选项,在第四步中,单击Advance(高级)按钮, 弹出Advance Options对话框,在File Extension(文件扩展名)编辑框中输入doc2,如图12.6所示。 完后按Close按钮。
2) 框架窗口类CMainFrame是一个从CMDIFrameWnd类派生的类,在MDI应用程序中,框架窗口就 是应用程序的主窗口,主窗口就是应用程序直接放置于桌面上的哪个窗口,每个应用程序只能有一 个主窗口,主窗口的标题栏上常常显示应用程序的名称(如在记事本程序中,新建一个文件后,主 窗口的标题栏上显示“未顶定标题-记事本”)。
图(三)
Visual C++
图12.5 选择如何支持复合文档对话框
图12.6 文件的高级选项对话框图
12.7 MDI应用程序中的主要类图
【例12-2】(续)
Visual C++
➢
向导生成的一个典型的多文档应用程序包括一个应用程序类CMyWordApp、一个主框架窗口类
CMainFrame、 一 个 子 框 架 窗 口 类 CChildFrame、 一 个 文 档 类 CMyWordDoc、 一 个 视 图 类
➢ 图12.4 文件保存对话框
Visual C++
【例12-2】本实例实现一个丰富文本编辑功能,即可以在当前文档 中插入其它的图形、音频等。它是基于多文档的应用程序。
➢ (1)实例创建步骤
➢
① 创建一个新的MFC AppWizard(exe)工程,工程名称为MyWord。
➢ ② 在AppWizard的第一步中,选择类型为Multiple Documents(多文档类型)。
Visual C++
第12章 基于文档/视图结构的程序
12.1 文档/视图结构 12.2 框架——视图的容器 12.3 文档——管理和组织数据 12.4 视图——显示文档数据,提供用户接口 习题
12.1
Visual C++
文档/视图结构
❖ 文档/视图结构是在VC中使用MFC开发基于文档应用程序的基本 框架,在这个框架中,数据的维护及其显示分别由两个不同的,但又 彼此紧密相关的对象——文档和视图负责的。文档对象通常代表应用 程序中打开的一个文件,而视图窗口则提供了该文档对象中数据的可 视化表示形式并接收用户的交互。文档和视图关系是一对多的关系, 即一个文档可以对应多个视图(如一个Word文档有大纲视图、页面视 图、Web板式视图等),但一个视图只能对应一个文档。
➢ (4) 保存文档
➢ 在MyEditor应用程序的客户区输入一些文本后,单击“文件|保存”,则弹出图12.4所示的“文件 保存”对话框,将文件名编辑框中输入一个文件名如vc6,则在制定的目录下保存了一个vc6.txt2文件, 其中保存类型编辑框中出现的的文字就是在图12.1中的设置所起的作用。
➢ 另外,在Window下,我们直接双击刚才建立的文件vc6.txt2,则该文件自动用程序MyEditor打开, 和在Windows下用鼠标双击某个.doc文件,则该文件自动用Word字处理程序打开类似,该功能是怎 样实现的呢?
单的基于文档/视图结构的程序,程序在运行过程中,只能打开该程序 所 关 联 的 ( 如 Wordห้องสมุดไป่ตู้子 处 理 程 序 关 联 的 的 是 . Doc 文 件 , 即 双 击 某 个.Doc文件,启动它的是Word程序)一个文件。
❖ 3.MDI应用程序的组成类 多文档应用程序是一种比较
复杂的基于文档/视图结构程序,程序在运行过程中,可以打开该程序 所关联的(如Excel电子表格处理程序关联的的是.xls文件,即双击某 个.xls文件,启动它的是Excel程序)多个文件。
Advance(高级)按钮,弹出Advance Options对话框,在File Extension(文件扩 展名)编辑框中输入txt2,如图12.1所示。完后按Close按钮。 ➢ ④ AppWizard的第五步使用缺省的选项,在第六步中,将CMyEditorView类的 基类设置为CEditView后,按Close按钮关闭该对话框,在余下的几步中,全部使 用默认值。最后单击“Finish”按钮,生成应用程序框架。
➢
// Enable DDE Execute open
➢
EnableShellOpen();
➢ //使得双击.txt2文件类型时能调用该工程MyEditor打开
➢
RegisterShellFileTypes(TRUE);
➢ //在注册表中注册文件类型.txt2
➢
// Parse command line for standard shell commands, DDE, file open
➢ ① 应用程序类CMyEditorApp是一个从CWinApp类派生的类,它充当全部应用程序 的容器。
➢ ② 框架窗口类CMainFrame是一个从CFrameWnd类派生的类。在SDI应用程序中, 框架窗口就是应用程序的主窗口,主窗口就是应用程序直接放置于桌面上的那个窗口,每 个应用程序只能有一个主窗口,主窗口的标题栏上常常显示应用程序的名称(如在记事本 程序中,新建一个文件后,主窗口的标题栏上显示“未定标题-记事本”)。
Visual C++
12.1.2 文档/视图结构程序
的主要组成类
❖ 1.文档/视结构概述 在MFC 应用程序中,文档/视图结构
用来将程序的数据本身(靠CDocument类来管理)与数据的显示以及 用户对数据的交互(靠CView类来管理)相隔离,这种模式与数据库 系统中的“表/视图”关系相似。
❖ 2.SDI应用程序的组成类 单文档应用程序是一种比较简
Visual C++
第12章 基于文档/视图结构的程序
➢ 本章内容主要包括建立基于文档/视图结构的应用程序方法,
文档/视图结构应用程序的组成类及在应用程序架构中的作用, 文档类CDocument与视图CView类,建立从CObject派生 的类并实现对象的序列化操作。
要求了解建立文档/视图结构应用程序的方法、应 用程序向导创建的三种应用程序类型、VC中对单链 表的处理。以Word为例,熟悉MDI应用程序中各 个窗口所对应的类是什么,掌握文档类和视图类的 常见成员函数、文档类和视图类的交互,熟练掌握 VC中自定义类的持久化处理方法。
➢ ③ 文档类CMyEditorDoc是从CDocument类继承而来的类,它存储应用程序的数据, 并将这些信息提供给应用程序的其余部分。
➢ ④ 视图类CMyEditorView是从CEditView类派生而来的,CEditView类提供了基本的 文本编辑功能,是从CView类派生来的。视图窗口与其父窗口——框架窗口的客户区域对 齐,它接收用户对应用程序的输入并显示相关联的文档数据。
➢
IDR_MAINFRAME,
➢
RUNTIME_CLASS(CMyEditorDoc),
➢
RUNTIME_CLASS(CMainFrame), // main SDI frame window
➢
RUNTIME_CLASS(CMyEditorView));
➢
AddDocTemplate(pDocTemplate);
➢ ⑤ 对话框类CAboutDlg是从CDialog派生来的,该对话框类显示一个简单的版本信息 的“关于”对话框。对话框类的说明前面有一章已经专门讲解了。
【例12-1】(续)
Visual C++
➢ (3) 运行SDI应用程序
➢ 编译并运行上述程序的显示结果如图12.3所示。在客户区中输入一些文本,然后保存。再新建一个, 刚才所输入内容的文件已经关闭。这是一个典型的单文档应用程序,看它是否和记事本程序的功能类 似。
【例12-1】(续)
Visual C++
➢
向导生成的一个典型的单文档应用程序包括一个应用程序类CMyEditorApp、一个主
框架窗口类CMainFrame、一个文档类CMyEditorDoc、一个视图类CMyEditorView、
12.1.2 文档/视图结构程序的主要组成类
12.1.3 从程序员角度看SDI与MDI应用程序
12.1.4 应用程序类
12.1.5 文档/视图结构优点
Visual C++
12.1.1 VC开发的应用程序类型
❖ 利用MFC应用程序向导可以开发三种类型的应用程序: ❖ 第一种是基于对话框的应用程序,上一章讲的对话框与控 件大部分是基于对话框的应用程序。 ❖ 第二种是基于SDI(Single Document Interface单文档接 口)的应用程序,其特点是用户一次只能打开一个文档,若已 经打开一个文档,想打开另一个文档时,必须关闭当前打开的 文档。 ❖ 第三种基于MDI(Multi Document Interfac多文档接口) 的应用程序,其特点是用户一次可以打开多个文档,若已经打 开一个文档,又想打开另一个文档时,不必关闭当前打开的文 档,它体现了Windows操作系统的多任务特点。
➢ 定位到应用程序类的InitInstance()函数中,可以看到下面的代码:
Visual C++
➢ BOOL CMyEditorApp::InitInstance()
➢{
➢ ……
➢
CSingleDocTemplate* pDocTemplate;
➢
pDocTemplate = new CSingleDocTemplate(
➢ ③ AppWizard的第二步使用缺省的选项,在第三步中主要选择如何支持复合档支持 文档的, 我们选择“Container”容器支持,如图12.5所示,完后按Next按钮。
➢ ④ AppWizard的第二步、第三步中使用缺省的选项,在第四步中,单击Advance(高级)按钮, 弹出Advance Options对话框,在File Extension(文件扩展名)编辑框中输入doc2,如图12.6所示。 完后按Close按钮。
2) 框架窗口类CMainFrame是一个从CMDIFrameWnd类派生的类,在MDI应用程序中,框架窗口就 是应用程序的主窗口,主窗口就是应用程序直接放置于桌面上的哪个窗口,每个应用程序只能有一 个主窗口,主窗口的标题栏上常常显示应用程序的名称(如在记事本程序中,新建一个文件后,主 窗口的标题栏上显示“未顶定标题-记事本”)。
图(三)
Visual C++
图12.5 选择如何支持复合文档对话框
图12.6 文件的高级选项对话框图
12.7 MDI应用程序中的主要类图
【例12-2】(续)
Visual C++
➢
向导生成的一个典型的多文档应用程序包括一个应用程序类CMyWordApp、一个主框架窗口类
CMainFrame、 一 个 子 框 架 窗 口 类 CChildFrame、 一 个 文 档 类 CMyWordDoc、 一 个 视 图 类
➢ 图12.4 文件保存对话框
Visual C++
【例12-2】本实例实现一个丰富文本编辑功能,即可以在当前文档 中插入其它的图形、音频等。它是基于多文档的应用程序。
➢ (1)实例创建步骤
➢
① 创建一个新的MFC AppWizard(exe)工程,工程名称为MyWord。
➢ ② 在AppWizard的第一步中,选择类型为Multiple Documents(多文档类型)。
Visual C++
第12章 基于文档/视图结构的程序
12.1 文档/视图结构 12.2 框架——视图的容器 12.3 文档——管理和组织数据 12.4 视图——显示文档数据,提供用户接口 习题
12.1
Visual C++
文档/视图结构
❖ 文档/视图结构是在VC中使用MFC开发基于文档应用程序的基本 框架,在这个框架中,数据的维护及其显示分别由两个不同的,但又 彼此紧密相关的对象——文档和视图负责的。文档对象通常代表应用 程序中打开的一个文件,而视图窗口则提供了该文档对象中数据的可 视化表示形式并接收用户的交互。文档和视图关系是一对多的关系, 即一个文档可以对应多个视图(如一个Word文档有大纲视图、页面视 图、Web板式视图等),但一个视图只能对应一个文档。
➢ (4) 保存文档
➢ 在MyEditor应用程序的客户区输入一些文本后,单击“文件|保存”,则弹出图12.4所示的“文件 保存”对话框,将文件名编辑框中输入一个文件名如vc6,则在制定的目录下保存了一个vc6.txt2文件, 其中保存类型编辑框中出现的的文字就是在图12.1中的设置所起的作用。
➢ 另外,在Window下,我们直接双击刚才建立的文件vc6.txt2,则该文件自动用程序MyEditor打开, 和在Windows下用鼠标双击某个.doc文件,则该文件自动用Word字处理程序打开类似,该功能是怎 样实现的呢?
单的基于文档/视图结构的程序,程序在运行过程中,只能打开该程序 所 关 联 的 ( 如 Wordห้องสมุดไป่ตู้子 处 理 程 序 关 联 的 的 是 . Doc 文 件 , 即 双 击 某 个.Doc文件,启动它的是Word程序)一个文件。
❖ 3.MDI应用程序的组成类 多文档应用程序是一种比较
复杂的基于文档/视图结构程序,程序在运行过程中,可以打开该程序 所关联的(如Excel电子表格处理程序关联的的是.xls文件,即双击某 个.xls文件,启动它的是Excel程序)多个文件。
Advance(高级)按钮,弹出Advance Options对话框,在File Extension(文件扩 展名)编辑框中输入txt2,如图12.1所示。完后按Close按钮。 ➢ ④ AppWizard的第五步使用缺省的选项,在第六步中,将CMyEditorView类的 基类设置为CEditView后,按Close按钮关闭该对话框,在余下的几步中,全部使 用默认值。最后单击“Finish”按钮,生成应用程序框架。
➢
// Enable DDE Execute open
➢
EnableShellOpen();
➢ //使得双击.txt2文件类型时能调用该工程MyEditor打开
➢
RegisterShellFileTypes(TRUE);
➢ //在注册表中注册文件类型.txt2
➢
// Parse command line for standard shell commands, DDE, file open
➢ ① 应用程序类CMyEditorApp是一个从CWinApp类派生的类,它充当全部应用程序 的容器。
➢ ② 框架窗口类CMainFrame是一个从CFrameWnd类派生的类。在SDI应用程序中, 框架窗口就是应用程序的主窗口,主窗口就是应用程序直接放置于桌面上的那个窗口,每 个应用程序只能有一个主窗口,主窗口的标题栏上常常显示应用程序的名称(如在记事本 程序中,新建一个文件后,主窗口的标题栏上显示“未定标题-记事本”)。
Visual C++
12.1.2 文档/视图结构程序
的主要组成类
❖ 1.文档/视结构概述 在MFC 应用程序中,文档/视图结构
用来将程序的数据本身(靠CDocument类来管理)与数据的显示以及 用户对数据的交互(靠CView类来管理)相隔离,这种模式与数据库 系统中的“表/视图”关系相似。
❖ 2.SDI应用程序的组成类 单文档应用程序是一种比较简
Visual C++
第12章 基于文档/视图结构的程序
➢ 本章内容主要包括建立基于文档/视图结构的应用程序方法,
文档/视图结构应用程序的组成类及在应用程序架构中的作用, 文档类CDocument与视图CView类,建立从CObject派生 的类并实现对象的序列化操作。
要求了解建立文档/视图结构应用程序的方法、应 用程序向导创建的三种应用程序类型、VC中对单链 表的处理。以Word为例,熟悉MDI应用程序中各 个窗口所对应的类是什么,掌握文档类和视图类的 常见成员函数、文档类和视图类的交互,熟练掌握 VC中自定义类的持久化处理方法。
➢ ③ 文档类CMyEditorDoc是从CDocument类继承而来的类,它存储应用程序的数据, 并将这些信息提供给应用程序的其余部分。
➢ ④ 视图类CMyEditorView是从CEditView类派生而来的,CEditView类提供了基本的 文本编辑功能,是从CView类派生来的。视图窗口与其父窗口——框架窗口的客户区域对 齐,它接收用户对应用程序的输入并显示相关联的文档数据。
➢
IDR_MAINFRAME,
➢
RUNTIME_CLASS(CMyEditorDoc),
➢
RUNTIME_CLASS(CMainFrame), // main SDI frame window
➢
RUNTIME_CLASS(CMyEditorView));
➢
AddDocTemplate(pDocTemplate);
➢ ⑤ 对话框类CAboutDlg是从CDialog派生来的,该对话框类显示一个简单的版本信息 的“关于”对话框。对话框类的说明前面有一章已经专门讲解了。
【例12-1】(续)
Visual C++
➢ (3) 运行SDI应用程序
➢ 编译并运行上述程序的显示结果如图12.3所示。在客户区中输入一些文本,然后保存。再新建一个, 刚才所输入内容的文件已经关闭。这是一个典型的单文档应用程序,看它是否和记事本程序的功能类 似。
【例12-1】(续)
Visual C++
➢
向导生成的一个典型的单文档应用程序包括一个应用程序类CMyEditorApp、一个主
框架窗口类CMainFrame、一个文档类CMyEditorDoc、一个视图类CMyEditorView、