摘要: 一、对象的序列化1、概念序列化对象 - 将对象的类信息和对象的成员变量依次写入到文件的过程。反序列化对象 - 从文件中读取类的信息,创建对象,并依次读取成员变量的值赋值给对象。2、定义支持序列化的类 2.1派生自CObject类 2.2 添加序列化的声明宏DECLARE_SERIAL(CStudent) 和实现宏IMPLEMENT_SERIAL(CStudent, CObject, 1) 2.3 重写CObject::Serialize()函数,在函数中,完成类的成员变量的序列化。3、一个类的完整的序列化,要求父类,成员变量,都要支持序列化。二、序列化小例子 1 #include " 阅读全文
posted @ 2014-01-20 00:26 the beginner of C++ 阅读(2385) 评论(0) 推荐(0) 编辑
摘要: 一、作用:动态创建对象二、使用1、必须直接或间接继承CObject类2、类内添加声明宏DECLARE_DYNCREATE(CDog)3、类外添加实现宏DECLARE_DYNCREATE(CDog, CAnimal)三、具体实例 1 class CAnimal : public CObject 2 { 3 DECLARE_DYNCREATE(CAnimal) 4 }; 5 IMPLEMENT_DYNCREATE(CAnimal, CObject) 6 7 class CDog : public CAnimal 8 { 9 //DECLARE_DYNCREATE(CDog)10... 阅读全文
posted @ 2014-01-08 02:06 the beginner of C++ 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 一、作用:可以知道一个对象是否属于某一个类二、使用:1、必须直接或间接继承CObject类2、添加声明宏DECLARE_DYNAMIC(CDog)3、添加实现宏IMPLEMENT_DYNAMIC(CDog, CAnimal)三、具体实例 1 class CAnimal : public CObject 2 { 3 DECLARE_DYNAMIC(CAnimal) 4 }; 5 IMPLEMENT_DYNAMIC(CAnimal, CObject) 6 7 class CCat : public CAnimal 8 { 9 DECLARE_DYNAMIC(CCat)10... 阅读全文
posted @ 2014-01-08 01:12 the beginner of C++ 阅读(557) 评论(0) 推荐(0) 编辑
摘要: 一、消息映射机制的使用1、必须由CCmdTarget类直接派生或者间接派生2、在类内写声明宏DECLARE_MESSAGE_MAP()3、在类外写实现宏BEGIN_MESSAGE_MPA(CMainFrameWnd, CFrameWnd)二、写一个简单的窗口应用程序 1 //窗口框架类 2 class CMainFrameWnd : public CFrameWnd 3 { 4 //DECLARE_MESSAGE_MAP() 5 private: 6 static const AFX_MSGMAP_ENTRY _messageEntries[]; 7 /*struc... 阅读全文
posted @ 2014-01-07 02:07 the beginner of C++ 阅读(526) 评论(0) 推荐(0) 编辑
摘要: 首先,是创建自己定义的框架窗口类的对象,通过框架窗口类对象调用成员虚函数Create。Create函数主要做了三件事:1、在创建窗口前,先注册窗口,由于在之前窗口类名还是空的,但是,必须要指明到底是基于哪一类窗口的,所以要在注册窗口前指明,这里就是用了一个全局变量,其实就是一个字符串给它赋值,还有一点比较重要的是,在注册窗口时,窗口处理函数只被赋了默认窗口处理函数,学过WIN32的人都知道,这肯定不行的,至少关闭窗口时,是退不出程序的,要自己自定义窗口处理函数进行处理。不用着急,估计它后面肯定会对它进行修改的,至于哪里进行修改,我们拭目以待。好了,注册完窗口后,别忘了创建窗口时,窗口类名也不能 阅读全文
posted @ 2014-01-06 00:04 the beginner of C++ 阅读(922) 评论(0) 推荐(0) 编辑
摘要: 首先,我们要搞清楚的是,一个程序只能有一个入口,而MFC库中,恰好把程序入口给封装了,也就是说整个程序的流程给MFC接管了(谁写程序入口,谁接管程序的流程),但我们可以通过某种方式来修改这个流程。那么,到底是怎么样去修改里面的流程,从而实现我们想要的效果呢?以下将会作出详细的解答:要说明的是,以下是自己通过看MFC源代码,总结出来的一个大概的过程,如有误,欢迎提出,大家共同进步。首先,我们怎么才能知道MFC最先是从哪里开始执行的呢?我们可以先写一个自己的应用程序类继承于CWinApp(记得不要忘了要支持MFC库哦),定义一个全局的应用程序类对象,然后在这一行断点,以调试方式执行,然后通过调用堆 阅读全文
posted @ 2014-01-05 00:49 the beginner of C++ 阅读(1042) 评论(0) 推荐(0) 编辑