当前课程知识点:VC++面向对象与可视化程序设计(下):MFC编程基础 >  第6章 MFC基础知识 >  6-3 MFC类的组织结构及主要的类的简介 >  6-3-3 应用程序结构类

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

6-3-3 应用程序结构类在线视频

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

下一节:6-3-4 可视对象类

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

6-3-3 应用程序结构类课程教案、知识点、字幕

应用程序结构类它包含了

命令相关类

窗口应用程序类

文档视图类

和线程基类

应用程序结构类用于构造应用程序框架的结构

提供多数应用程序公用的功能

那在使用应用程序结构类

我们编写程序的任务实际上就是填充框架

添加应用程序的专用的功能

应用程序结构类中的命令相关类

CCmdTarget类

这个类是CObject类的子类

它是MFC库中所有具有消息映射属性的基类

消息映射规定了当一个对象接收到消息命令的时候

应调用哪一个函数对这个消息进行处理

CCmdTarget类它有这些成员函数

比如说显示光标

这是显示沙漏光标

EnableConnections是启用连接点事件

EnableTypeLib是启用目标类库

GetDispatchIID是返回与IDispatch有关的CCmdTarget对象的指针

这个类成员函数比较多

详细内容请大家参见afxwin.h这个文件

GetTypeInfoCount这是获取一个对象提供的类型信息接口数目

等等

这些请大家自己详细地看一下我刚才提到的

afxwin.h这个文件就行了

那么在我们这个课上我没必要把一个一个的内容全部亮一遍

像线程基类CWinThread类

它是所有线程的基类

可以直接使用

像我们后面会用到的CWinApp类就是从CWinThread类中派生出来的

那我们先来了解一下线程和进程的概念

因为这里谈到了线程基类

进程process和线程thread是操作系统的基本概念

进程是一块包含了某些资源的内存区域

操作系统利用进程把它的工作划分为一些功能单元

进程中所包含的一个或多个执行单元称为线程

进程还拥有一个私有的虚拟地址空间

该空间仅能被它所包含的线程访问

线程只能归属于一个进程并且它只能访问该进程所拥有的资源

当操作系统创建一个进程后

该进程会自动申请一个名为主线程或首要线程的线程

这是进程和线程的概念

应用程序application是由一个或多个相互协作的进程组成的

比如说大家在编写应用程序的时候使用的Visual Studio开发环境

就是利用一个进程编辑源文件

并利用另一个进程完成编译工作的应用程序

CWinThread类的构造函数有这么一些

我这里简单地给大家指出几个

详细内容请参见MSDN

那也就是说我们在介绍这个类的构架的时候

我们只是给大家介绍了类的构架

不可能把每一个类的所有成员以及它的方法全部介绍一遍

所以具体的我们要求大家去msdn上去看的内容

大家一定要去看

这是大学的学习模式

就是要求课上我们把关键内容点拨一下

课后自己要有自主学习自主获取知识的能力

好了

讲到这儿我们继续讲类的构造函数

有CreateThread

这是开始CWinThread对象的执行

以及GetMainWnd是查询指向线程主窗口的指针

InitInstance这个大家很熟悉

前面一直在做这个事情

这是实现线程实例的初始化

好了这里还有一个PreTranslateMessage

是在消息被发送到Windows函数TranslateMessage

和DispatchMessage之前过滤消息

那这个TranslateMessage和DispatchMessage

在我们前面介绍Windows编程的时候

大家已经非常熟悉了

一直在用这个

ProcessMessageFilter是在特定的消息到达之前截获消息

这个WndProc大家非常熟悉

Exception就是例外

这个大家如果熟悉这个单词的话很容易识别这个函数它的功能

就是获取线程消息和命令处理函数出现的所有未处理的异常

CWinThread类它有一些公共的数据成员

比如说m_hThread这是当前线程的句柄

这个句柄的问题大家已经很熟悉了

m_nThreadID这是当前线程的ID

这个m_pMainWnd是保存指向应用程序的主窗口的指针

公共数据成员的相关的内容请大家参见这个网址

窗口应用程序类

每个应用程序有而且只有一个应用程序对象

在运行程序中该对象与其他对象相互协调

该对象从CWinApp类中派生出来的

也就是说CWinApp类封装了初始化、运行、终止应用程序的代码

那这里给出了相应的msdn的网址的介绍内容

CWinApp类的公共方法主要有这些

我把常用的给大家介绍一下

比如说CloseAllDocuments这是关闭所有打开的文档

CreatePinterDC这是创建一个打印机的DC

DoWaitCursor这是打开和关闭等待光标

比如说这个GetPrinterDeviceDefaults这是检索默认打印机

这是LoadCursor加载光标资源

这个前面大家全用过

所以在讲到这里大家就知道前面我们介绍的Windows编程里面

用的API函数LoadCursor、LoadIcon

实际上它是被封装在CWinApp类里面的一个公共的方法

有一些被封装的函数我们在前面已经用过了

这样的话我们在学习这个类的构造以及对相应方法的调用应该就不难了

好我再讲几个常用的

比如说OnFileNew就是实现了这个new

就是文件菜单里面的那个新建菜单项的操作

OnFileOpen就是“文件”菜单里面的那个打开菜单项的操作

你这里要把这个“文件”菜单给它显示出来

OnFilePrintSetup实际上就是打印机的设置

OnHelp就是在应用程序中处理F1的帮助

所以这几个大家应该是非常熟悉

比如说大家在使用Word文档编辑器

里面就有一个“文件”菜单

文件菜单打开后就有“新建”、“打开”、“打印机设置”、“帮助”

当然还有“保存”、“另存为”等等等等这些菜单项

这个应该大家用起来并不难

这是受保护的

是属于protected这个方法

再介绍几个公用的数据成员

比如说m_hInstance这是标识应用程序的当前实例

再比如说m_pszAppName指向应用程序的名称

然后这个pszExeName,这个Exe就是执行

Name名字

就是应用程序的模块名称

等等

这个可能大家后面会用到

再比如这个m_lpCmdLine

指向一个以空结尾的字符串

实际上它是指定了应用程序的命令行

我们再介绍文档视图类

文档对象是由文档模板对象创建

管理应用程序的数据

视图对象表示一个窗口的客户区

用来显示文档数据并允许用户与之交互

那关于文档类和视图类这个类的定义

大家参见相关的MSDN的网址

大家注意到这里列出来比如说这两个

实际上差别在哪儿呢

只差别这个地方

说明这en是英文版的

zh是中文版的

字可能看起来不是很顺

那文档类的公共方法主要有几个

比如说GetTitle是返回文档的标题

OnCloseDocument关闭文档

OnNewDocument创建新文档

OnOpenDocument打开现有存在的文档

再比如说OnRichPreviewFontChanged是更改字体

OnRichPreviewBackColorChanged更改背景色

那这个在文档编辑过程中更改背景色、更改字体这种操作大家经常在做

再比如说OnSaveDocument这是保存文档到磁盘

UpdateAllViews是更新所有视图

这是文档类的公共方法

常用的几个给大家介绍一下

那视图类的公共方法

我这里给列出来的主要是注释部分的就用英文版的了

因为刚才给大家介绍过了

中文版的内容它文字上不是很顺

比如说GetDocument这是返回与视图有关的一个文档

这是返回与视图有关的文档

这里面更多的公共方法我就不在这儿介绍了

给大家列出来这些

因为这里面在大家编程过程中用的不是太多

因为它的类的公共方法定义了很多是为了各种各样的编程

但是我们作为基础课的学习用不着这么多

所以我把用到的给大家讲一下

大家如果有兴趣的话

上这个网址

刚才说的视图类的网址如果愿意看中文就看这个网址

就可以看到这里面所有的类的方法

CView类它还派生了如下一些类

比如说CCtrlView

它是允许使用树、列表、编辑控件视图结构

那Dao实际上是数据库使用的

有一个DAO和ODBC

这是在对话框中显示数据记录

CEditView是使用单行或者多行的编辑框

这个我们后面编程会用到

CListView允许使用带有列表框控件的文档-视图类

CRecordView在对话框中显示数据记录的视图

比如说CScrollView自动提供滚动条支持的视图

CTreeView允许使用树状控件的文档视图架构的视图

那这些我们讲到相应控件的时候都会用到

在CWinApp中定义的部分函数的功能

有时也可以通过MFC提供的全局函数来实现

这些全局函数一般都是以Afx为前缀

比如调用AfxMessageBox函数将弹出一个消息框

其功能与CWinApp中的DoMessageBox相同

AfxMessageBox原型就是这样的

这里面这个是要显示的消息内容

这里有一个MB_OK

就是消息框里面有一个确定按钮

这里面它有一个UINT的参数0

它就是缺省值

就不用管它了

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

第三次作业及答题链接

-第三次作业及答题链接

6-3-3 应用程序结构类笔记与讨论

也许你还感兴趣的课程:

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