- 0
- 0
- 约8.66千字
- 约 54页
- 2019-09-10 发布于辽宁
- 举报
4.3 CObject类 CObject是大多数MFC类的根类或基类。CObject类有很多有用的特性:对运行时类信息的支持,对动态创建的支持,对串行化的支持,对象诊断输出,等等。MFC从CObject派生出许多类,具备其中的一个或者多个特性。程序员也可以从CObject类派生出自己的类,利用CObject类的这些特性。 4.3.1 CObject类的定义 CObject定义了一个CRuntimeClass类型的静态成员变量 , 还定义了几组函数:构造函数和析构函数类;诊断函数;与运行时类信息相关的函数;与串行化相关的函数 其中,一个静态函数: _GetBaseClass;五个虚拟函数:析构函数、GetRuntimeClass、Serialize、AssertValid、Dump。这些虚拟函数,在CObject的派生类中应该有更具体的实现。必要的话,派生类实现它们时可能要求先调用基类的实现, 静态成员变量 classCObject和相关函数实现了对CObjet特性的支持。 4.3.2 CObject类的特性 1.对运行时类信息的支持 该特性用于在运行时确定一个对象是否属于一特定类(是该类的实例),或者从一个特定类派生来的,CObject提供IsKindOf函数来实现这个功能。 从CObject派生的类要具有这样的特性,需要: (1)定义该类时,在类说明中使用 DECLARE_DYNAMIC(CLASSNMAE)宏; (2)在类的实现文件中使用 IMPLEMENT_DYNAMIC(CLASSNAME,BASECLASS)宏。 2.对动态创建的支持 前面提到了动态创建的概念,就是运行时创建指定类的实例。在MFC中大量使用,如前所述框架窗口对象、视对象,还有文档对象都需要由文档模板类(CDocTemplate)对象来动态的创建。 从CObject派生的类要具有动态创建的功能,需要: (1)定义该类时,在类说明中使用DECLARE_DYNCREATE(CLASSNMAE)宏; (2)定义一个不带参数的构造函数(默认构造函数); (3)在类的实现文件中使用IMPLEMENT_DYNCREATE(CLASSNAME,BASECLASS)宏; (4)使用时先通过宏RUNTIME_CLASS得到类的RunTime信息,然后使用CRuntimeClass的成员函数CreateObject创建一个该类的实例。 3.对序列化的支持 “序列化”就是把对象内容存入一个文件或从一个文件中读取对象内容的过程。从CObject派生的类要具有序列化的功能,需要: (1)定义该类时,在类说明中使用DECLARE_SERIAL(CLASSNMAE)宏; (2)定义一个不带参数的构造函数(默认构造函数); (3)在类的实现文件中使用IMPLEMENT_SERIAL(CLASSNAME,BASECLASS)宏; (4)覆盖Serialize成员函数。(如果直接调用Serialize函数进行序列化读写,可以省略前面三步。) 对运行时类信息的支持、动态创建的支持、串行化的支持层(不包括直接调用Serailize实现序列化),这三种功能的层次依次升高。如果对后面的功能支持,必定对前面的功能支持。支持动态创建的话,必定支持运行时类信息;支持序列化,必定支持前面的两个功能,因为它们的声明和实现都是后者包含前者。 4.4 消息映射的实现 Windows系统将Windows应用程序的输入事件转换为消息,并将消息发送给应用程序的窗口。这些窗口通过窗口过程来接收和处理消息,然后把控制返还给Windows。 1.消息的分类 可以从消息的发送途径和消息的来源两方面对消息分类: (1)队列消息和非队列消息 从消息的发送途径上,可将消息分为队列消息和非队列消息。队列消息送到系统消息队列,然后送到线程消息队列;非队列消息直接送给目的窗口过程。 Windows系统维护着一个系统消息队列(System message queue),每个GUI线程有一个线程消息队列(Thread message queue)。 (2)系统消息和应用程序消息 从消息的来源,可将消息分为系统定义的消息和应用程序定义的消息。 系统消息ID的范围是从0到WM_USER-1,或从0X80000到0XBFFFF;应用程序消息ID的范围是从WM_USER(0X0400)到0X7FFF,或从0XC000到0XFFFF;WM_USER到0X7FFF范围的消息由应用程序自己使用;0XC000到0XFFFF范围的消息用来和其他
您可能关注的文档
- 网络编程实用教程第二版_第1章.ppt
- 网络编程实用教程第二版_第2章.ppt
- 网络编程实用教程第二版_第3章.ppt
- 网络编程实用教程第二版_第5章.ppt
- 网络编程实用教程第二版_第6章.ppt
- 网络编程实用教程第二版_第7章.ppt
- 网络编程实用教程第二版_第8章.ppt
- 网络编程实用教程第二版_第9章.ppt
- 网络编程实用教程第二版_第10章.ppt
- 网络编辑实务1课程解析.ppt
- 良肢位摆放在骨科康复中的应用.ppt
- 2026精选人教版一年级上册数学期末考试试卷(3套含答案解析).docx
- 2026新版人教版三年级上册语文期末考试试卷(3套含答案解析).pdf
- 2026精选人教版四年级上册英语期末考试试卷(3套含答案解析).pdf
- 2026新版人教版三年级上册数学期末考试试卷(3套含答案解析).pdf
- 2026新版人教版三年级下册数学期末考试试卷(3套含答案解析).docx
- 2026精选人教版四年级上册英语期末考试试卷(3套含答案解析).docx
- 2026新版人教版三年级上册语文期末考试试卷(3套含答案解析).docx
- 良肢位摆放与康复训练的结合.ppt
- 良肢位摆放在儿童康复中的应用.ppt
最近下载
- 生死二十八天.docx VIP
- 《水浒传》知识竞赛200题.doc VIP
- 李可六经临床方剂参考(摘自孙其新《李可六经辨证学》.pdf VIP
- 2025年高考数学第一轮复习考点讲与练第06讲平面向量中的范围与最值问题(高阶拓展、竞赛适用)(学生版+解析).docx VIP
- 2025年高考数学第一轮复习考点讲与练第13讲泰勒展开式及相关不等式放缩在导数中的应用(高阶拓展、竞赛适用)(学生版+解析).docx VIP
- 高考数学第一轮复习(新教材新高考)专题06权方和不等式(高阶拓展)(核心考点精讲精练)(学生版+解析).docx VIP
- 2026年熔化焊接与热切割考试试题及解析.docx VIP
- 高考数学第一轮复习(新教材新高考)第02讲平面向量的数量积(核心考点精讲精练)(学生版+解析).docx VIP
- 电气装置安装工程-低压电器施工及验收规范GB50254.doc VIP
- 2025年高考数学第一轮复习考点讲与练第05讲平面向量之极化恒等式(高阶拓展、竞赛适用)(学生版+解析).docx VIP
原创力文档

文档评论(0)