当前课程知识点:VC++面向对象与可视化程序设计(下):MFC编程基础 >  第9章 单文档与多文档 >  9-3 文档操作中的一些重要概念 >  Video

返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频列表

Video课程教案、知识点、字幕

好!我们下面介绍文档操作中的一些重要概念

文档操作要涉及串行化处理

文档的消息映射

和文档消息的传递

首先我们说串行化处理

串行化就是将对象写入字节流

和从字节流恢复对象的操作

那串行化代码就是Serialize

这里就是有一个参数是CArchive

这里面有一个&表示引用调用

也就是说函数对ar这个变量的操作是会改变ar的值的

如果没有&这个引用调用符

函数对ar的操作是不会改变ar的值的

ar是CArchive的对象

那么ar.IsStoring就判断是否保存

如果是保存就增加保存的代码

如果不是就增加加载的代码

那么这是一个串行化处理的一个代码构架

那CArchive类的常用成员它是非常多的

大家知道在进行串行化处理时

通常是通过CArchive类来完成的

那么它的常用成员比如说有WriteString

写入字符串

ReadString 读取字符串

比如说ReadClass、WriteClass

读取或写这个类的信息

m_pDocument这是使用该档案的文档

Read跟Write是读取字节的内容或者写入字节的内容

以及这个operator<<这是将基本类型写入这个流中

operator>>这个箭头方向不一样是读取

这里有一个IsStoring

就是是判断是否处于保存状态

以及ReadObject和WriteObject

是读取串行化和写入串行化对象

这是常用的CArchive类的成员

那文档的消息映射呢

实际上我们并不陌生

我们通常使用类向导来添加消息映射

但有时这个类向导并不支持某些类的消息映射

也就是说仅仅靠类向导生成的宏是不够的

而是需要自己添加一些自定义的宏

这个时候就需要手工添加消息映射代码

那么关于这个问题

实际上我们在上一讲里面有一个介绍例题里面已经接触到这个问题

那么消息映射呢

本质上它是一个数组

MFC使用这个数组来确定消息传递时

具体要传递给哪一个函数

那既然是这样的话呢

这个数组中存储的信息就包括

消息应用于控件的ID

或者说ID范围

上一讲里面我们介绍的那个颜色范围

红绿蓝

实际上就是一个ID范围

那么数组还有所处理的消息

消息所传递的参数

以及消息所期望的返回值

那通用的宏呢

比如说ON_COMMAND

那么就是处理WM_COMMAND消息

它记录ID和映射的就是ID绑定的函数

这就是对于COMMAND宏的响应

对一个ID范围的WM_COMMAND消息的响应

这个我们上一讲通过例子红绿蓝这个颜色变化

大家已经掌握到了

那么这个参数里面

第一个参数是第一个ID

第二个参数是最后一个ID

那么它映射了一个函数

或者它绑定了一个函数

那这个是ON_UPDATE_COMMAND_UI呢

是用于处理MFC的请求

用于更新界面状态

那么这个ON_UPDATE_COMMAND_UI_RANGE呢

和上面一样

也是用于更新页面状态

只是说它ID是一个范围

ON_NOTIFY是用来处理来自控件的WM_NOTIFY消息

那么第一个代码Code就是NOTIFY的消息代码

第二个就是ID控件

第三个就是它绑定的函数

那么这个也是通知宏的一个范围

ON_CONTROL以及CONTROL的范围

那大家注意到这里面很有意思的就是

很多命令

比如说COMMAND命令

它还有一个COMMAND范围

UPDATE_COMMAND_UI呢也有一个UPDATE_COMMAND_UI_RANGE这个范围

NOTIFY命令

它也有一个NOTIFY的RANGE范围

包括CONTROL也有一个CONTROL范围

为什么会这样呢

那么就是因为如果同类控件很多的情况下

我们为了方便处理

不要一一对每一个控件进行响应

那么我们针对控件范围的变化

根据它的变化进行响应就可以了

这样呢 编写你的代码就简单多了

然后这个是ON_MESSAGE是处理任意消息

包括用户自定义的消息

这是消息的ID以及消息的处理函数

那么这个是ON_REGISTERD_MESSAGE

处理使用WindowMessage注册的消息

那么从刚才介绍的来看

以上的宏的格式都是

ON_一个什么样的消息

然后第一个参数

第二个参数

最后呢必须是一个函数

这个func代表的是对控件处理的函数

这个func必须为添加消息映射的类的成员方法

包括它的父类方法

那有时候我们需要手工地添加消息映射

那么就是在BEGIN_MESSAGE_MAP跟END_MESSAGE_MAP之间增加

那么这个呢

我们在上一讲的例题里面

大家已经有体会啦

最后就是在类声明部分里要声明这个成员方法

在类实现部分要实现这个成员方法

那么这个关于消息宏的定义格式问题

那我们再介绍文档的消息传递

由于用户可以在很多的MFC类中映射同一个消息

如可以在文档和视图中同时映射打开文件的消息

这样就需要消息有明确的来源

也有明确的接收者

因此需要判断消息传递的顺序

它传递顺序是这样的

从当前视图

到当前文档

到与当前视图文档关联的文档模板

然后再到子框架窗口

那么对于子框架窗口

单文档是没有子框架的

多文档才有

然后再回到主窗口框架

最后到应用程序

它们是沿着这么一条路径来进行传递的

VC++面向对象与可视化程序设计(下):MFC编程基础课程列表:

第0章 课前讨论

-讨论实录

--0-0

第6章 MFC基础知识

-6-1 MFC概述

--6-1 MFC基础知识

-6-2 C++的基本知识

--6-2-1 类

--6-2-2 对象

--6-2-3 类的方法

--6-2-4 内联函数

--6-2-5 构造函数和析构函数

--6-2-6 重载

--6-2-7 友元函数

--6-2-8 友元类

--6-2-9 指针

--6-2-10 类的继承

--6-2-11 多态性和虚拟函数

-6-3 MFC类的组织结构及主要的类的简介

--6-3-1 MFC类的组织结构

--6-3-2 根类

--6-3-3 应用程序结构类

--6-3-4 可视对象类

--6-3-5 通用类

--6-3-6 OLE类

--6-3-7 ODBC数据库

-6-4 MFC中全局函数和全局变量

--6-4 MFC中全局函数和全局变量

第7章 Windows标准控件在可视化编程中的应用

-7-1 概述

--7-1-1

--7-1-2

-7-2 按钮控件及其应用

--128B12447816EEF99C33DC5901307461

-7-3 按钮控件及其应用

--7-3

-7-4 静态控件

--7-4

-7-5 列表框控件

--7-5-1

--7-5-2

-7-6 编辑框控件

--7-6

-7-7 组合框控件

--7-7

-7-8 对话框通用控件

--7-8-1

--7-8-2

-讲义源代码

--html

第8章 在MFC中创建应用程序的资源

-8-1&2 资源的应用以及菜单资源的使用

--8-1-1

--8-1-2

-8-3 快捷菜单的创建及其应用

--8-3

-8-4 加速键资源的创建及其使用

--8-4

-8-5 工具条资源的创建及其使用

--8-5

-8-6 字符串资源的使用

--8-6

-8-7 位图资源的创建及其使用

--8-7

-课堂示例源代码

--html

-第一次作业内容及要求

--html

--第一次作业及答题链接--作业

第9章 单文档与多文档

-9-1 概述

--9-1

-9-2 Doc/View框架的主要成员

--Video

-9-3 文档操作中的一些重要概念

--Video

-9-4 SDI编程实例

--Video

-9-5 MDI编程实例

--9-5-1

--9-5-2

-课堂示例源代码

--html

-第二次作业内容及要求

--html

--第二次作业及答题链接--作业

第10章 多媒体应用程序的设计

-10-1 利用音频函数实现多媒体程序设计

--10-1-1

--10-1-2

--10-1-3

--10-1-4

-10-2 利用Windows Media Player控件实现多媒体程序设计

--10-2

-课堂示例源代码

--html

第11章

-例11-1

--例1

-例11-2

--例11-2

-例11-3

--例11-3

-例11-4

--例11-4

-11-1 ODBC介绍与引用

--11-1

-课堂示例源代码

--html

第三次作业及答题链接

-第三次作业及答题链接

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。