当前课程知识点:VC++面向对象与可视化程序设计(下):MFC编程基础 >  第9章 单文档与多文档 >  9-4 SDI编程实例 >  Video

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

Video在线视频

Video

下一节:9-5-1

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

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

好!下面我们通过一个例子给大家介绍SDI的编程

那上一讲里面大家已经略微地接触了一下SDI的编程

我们这个例子是这样的

在SDI里面要调用对话框

所以的话,例子复杂度就更高一点了

这个例子是这样的

在主窗口中的中央显示一个文本

“您好,单文档界面的例程!”

一个字符串

单击编辑菜单下面的“改变显示文本”这个菜单项

就弹出了Input对话框

通过这个对话框

可以改变主窗口中显示的文本的内容

我们要创建一个工程文件然后并建立一个对话框资源

创建的工程文件就叫做MySdi

然后添加对话框资源

那我们看怎么做

创建一个工程文件

这个工程文件叫MySdi

我现在给它放到D盘下面的VC++下面

选择单文档

这个文件扩展名、筛选器名字我们都不管它

直接“下一步”

它们自动让它缺省地生成

打印机这个选项可以暂时地不要

生成了一个应用程序的基本的框架

那我们创建了这个SDI以后

要添加一个对话框资源

所以在Dialog里面我们添加一个资源

新建一个对话框资源

对话框有一个ID

它叫IDD_DIALOG1

我们把这个对话框的Caption给它改成Input

系统生成了一个“确定”跟“取消”按钮

我们给它保留着

然后为这个对话框创建一个类

这个类,类的名字叫CDlgInput

这个类的定义是在DlgInput.h这个文件中

它的操作文件DlgInput.cpp中

好!我们按“确定”按钮

好了!这个时候大家看到我们增加了一个CDlgInput类

那么在这里,类的定义在这个地方

那么这个就是我们的对话框

好了,那这个时候我们要在上面添加一个编辑框

所以我们把工具箱打开

添加一个编辑框Edit Control

为这个编辑框要连接一个变量

因为我这个编辑框是用来

修改文档中的字符串的

所以的话呢,这个编辑框里面它保存的是字符串

所以的话,这时候我要给它连接一个变量

这个变量

应该是

CString类型的

因为存放的是字符串

选择“确定”按钮

那这样我们就给它连接了一个变量

我们给它做一个界面的调整

我们可以给它保存一下

那下面我们要做的事情应该是

为CMyDocSdi类添加成员变量

这个成员变量用于存放字符串

而这个字符串是在什么时候显示的呢?

是在我们程序运行时

刚才大家看到的

我们出现了一个字符串

在文档里面

为这个文档类定义一个变量

我们添加一个变量

那么这个变量

仍然是字符型的

所以我们用的是CString

CString变量的名字叫做m_str

好!我们现在为它连接了一个变量

那这个时候在这个地方CMySdiDoc类里面

就看到了这个变量

因为我们一打开文件就在这个文档界面看到了这个字符串

所以的话我们要进行文档变量的初始化

这时候文档变量的初始化是在文档CMySdiDoc.cpp这个文件里面

它有一个OnNewDocument成员函数

在这里面我们对刚才定义的变量进行初始化

那么我们打开MySdiDoc.cpp这个文件

然后我们找到OnNewDocument函数

在这里增加一个内容

如果OnNewDocument这是“非”

那么就没有成功

否则

我们就进行初始化

然后我们保存一下

然后我们还要进行串行化处理

在OnNewDocument里面这块儿给它增加了

这块儿的初始化代码

我们下面继续完成文档的串行化处理

我们现在是这样

要在编辑菜单中添加一个菜单项

“改变显示文本”

在编辑菜单里面我们增加一个

叫“改变显示文本”

对这个“改变显示文本”我们要定义它的ID

ID为ID_EDIT_CHANGETEXT

单击这个菜单项可以对显示的文本所做的修改保存到磁盘文件中

单击它的时候它就是要改变文本

这时候我们给它响应一个COMMAND消息

COMMAND消息里面这里面我们要给它选择

SDI的document

然后这是文档

这是命令消息

然后这里系统缺省的给你OnEditChangetext

然后我们就编辑它

编辑它以后呢

我们这里增加一个代码

这个代码是这样的

是CInputDlg

然后我们定义了一个InputDlg

实际上是创建了一个CInputDlg类的对象

如果选择的是对话框里面

这是CInputDlg

大家知道是我定义的对话框类

实际上是在对话框里面定义了一个对象

然后这个对象实际上指向了这个对话框

然后在对话框里面DoModal==IDOK

那么这个意思是在对话框中选择的“确定”这么一个按钮

然后就获取对话框里面m_input

m_input是对话框里面我定义了一个编辑框

编辑框里面输入的内容

那么给它放到m_str里面

然后更新视图

视图它是要输出的

对于单文档视图类CMySdiView类的OnDraw函数

我们对它进行处理

我们下面要增加一些内容

这个就是定义了客户区类的一个对象

在这里面获取了客户区的一个指针

然后获取当前客户区的sizeClient

然后从中读取数据

那么就是这个pDoc,是指向当前文档的指针

指针里面指向m_str这个对象

从中获取的这个数据放到str里面

然后用选定的字体绘制这个字符串

那么在这个pDC指针指向文档里面

获取这个字符串的相关信息

然后TextOut这时候才输出

所以我们必须把这一段内容添加到OnDraw里面去

它应该是在视图里面进行处理的

前面都是在文档里面进行处理

所以这时候我们是在视图里面进行OnDraw的处理

OnDraw请大家注意

这个地方系统里面总是给它注释掉

这个应该把注释放掉

在这个地方增加刚才介绍的代码

那么这个时候大家注意到

为了在这个文档类中定义CDlgInput对象

还必须在这个MySdiDoc.cpp中加入对话框的头文件

加入这一行

回过头来看一下

那么我们刚才输入的代码

这个地方打了一个红色波浪线

说明这个地方是没有定义

没有定义,实际上它缺了什么东西呢?

它缺的就是一个

DialogueInput类的定义

那这个时候我们再回过头来看

我们刚才在OnEditChangetext里面

刚才这个CDlgInput波浪线已经没了

那么说明什么呢?

由于刚才插入了

这个DlgInput类的定义

在这里面它就认为DlgInput类

它就认为这个类已经定义了

所以这个地方大家需要注意了

然后为了把这些修改能够保存到磁盘文件中

而且需要的时候可以打开所保存的磁盘文件读取

我们还需要重载Serialize函数来完成串行化

重载后的Serialize函数的代码刚才已经给大家介绍过代码的构架

那么它就是引用ar

ar如果保存

我们就用这种方式保存

否则就是读取

我们把这个重载的代码写到Serialize这个函数里面去

这个地方我们就把重载的内容给它重写一下

就把这个构架给它填写成这样就可以了

然后我们开始编译一下

我们开始运行

好程序运行

它出来的是

您好!单文档界面例程

然后我们编辑里面

我们曾经增加过一个菜单项叫“改变显示文本”

弹出这个对话框

输入一段文字

大家看

比如说Hello World

这时候我按“确定”按钮

这时候文档里面就显示成Hello World

说明这个对话框的操作改变了文档的显示

大家就可以看到这里生成了Hello World

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笔记与讨论

也许你还感兴趣的课程:

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