当前课程知识点:VC++面向对象与可视化程序设计(下):MFC编程基础 > 第6章 MFC基础知识 > 6-3 MFC类的组织结构及主要的类的简介 > 6-3-3 应用程序结构类
返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频列表
应用程序结构类它包含了
命令相关类
窗口应用程序类
文档视图类
和线程基类
应用程序结构类用于构造应用程序框架的结构
提供多数应用程序公用的功能
那在使用应用程序结构类
我们编写程序的任务实际上就是填充框架
添加应用程序的专用的功能
应用程序结构类中的命令相关类
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
它就是缺省值
就不用管它了
-讨论实录
--0-0
-6-1 MFC概述
-6-2 C++的基本知识
--6-2-1 类
--6-2-2 对象
--6-2-6 重载
--6-2-9 指针
-6-3 MFC类的组织结构及主要的类的简介
--6-3-2 根类
-6-4 MFC中全局函数和全局变量
-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-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-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-1 利用音频函数实现多媒体程序设计
--10-1-1
--10-1-2
--10-1-3
--10-1-4
-10-2 利用Windows Media Player控件实现多媒体程序设计
--10-2
-课堂示例源代码
--html
-例11-1
--例1
-例11-2
--例11-2
-例11-3
--例11-3
-例11-4
--例11-4
-11-1 ODBC介绍与引用
--11-1
-课堂示例源代码
--html
-第三次作业及答题链接