- 博客(13)
- 资源 (24)
- 收藏
- 关注
原创 深入了解MFC动态创建
先说句客气话,很久没有更新此系列了,这段时间太闲,所以人也太懒再说句屎话,这几天的股市,真是tmd的狗屎啊最后再说句屁话,MFC的动态创建,就是一个屁!CRuntimeClass作为一个很奇怪的存在,在MFC中的地位还很高,但是很多书上都没有说这个东西到底有什么用,还是看看他的代码吧:struct CRuntimeClass{// Attributes LPCST
2012-06-28 20:37:20 1193
转载 用真正的MFC 宏集,根据类名字符串动态生成!DECLARE_xxx, IMPLEMENT_xxx
但凡读过侯老的关于MFC的书的人,没有人不晓得他对MFC RTTI机制细致入微的描述和模拟。 但那些macro(巨集)都是侯老为了描述问题方便,对真的 MFC 宏的拆解和重新组合。 那么用真正的MFC中定义的宏,如何动态生成。看我下面的程序吧。具体就不解释了,关心原理人的都是看过侯老书的人,看过侯老书的人,自然知道原理。 (本程序在vc6 下测试通过。建立一个空白的wi
2012-06-28 19:44:35 1182 1
原创 MFC关键技术应用:动态创建
动态创建就是运行时创建指定类的对象,在MFC中大量使用。如框架窗口对象、视对象,还有文档对象都需要由文档模板类对象来动态的创建。 初次接触MFC的时候,很容易有这样的迷惘。MFC的几大类不用我们设计也就罢了,但最疑惑的是不用我们实例化对象。本来最直观的理解就是,我们需要框架的时候,亲手写上CFrameWnd myFrame;需要视的时候,亲自打上CView myView;……但MFC不给我
2012-06-28 18:54:43 951
原创 如何精通MFC-----CObject类的理解
1, 应用程序中的“窗口”概念 从程序设计人员的角度看,窗口就是一个GUI句柄,以这个句柄作为一系列API函数的参数,就可以对窗口进行各种操作。MFC一般把窗口句柄封装成了一个CWnd的类,因此,对MFC程序员来说,窗口就是一个CWnd的对象。 从操作系统的角度看,窗口就是内存中的一块普通的内存。在这个内存中保存了一个叫WNDCLASS的结构体类型数据结构。所以说窗口的实质就
2012-06-28 16:54:03 934
原创 MFC原理系列报告之:运行期类型识别
刚学习完MFC,一时心血来潮,分析下MFC的几个关键技术,算是对学习的总结。由于本人还是个初学者,能力有限,语言组织欠妥,肯定有不足之处,欢迎批评斧正。 有以下几个部分内容:1.RTTI(运行期类型识别)2.动态创建3.序列化的实现4.程序的产生,运行和结束 ,以单文档框架程序为例5.单文档框架程序/类型之间的关系6.MFC消息机制的流转7.实现自己的SPY++
2012-06-28 16:31:13 1240
转载 MFC中动态创建对象的一点思考
本文对MFC动态创建对象的方法做了一点阐述,给出了一些我认为存在的问题及相应的解决方法,不当及不足之处请各位不吝赐教。这里指的动态创建指给定一个类的名字(字符串),创建出相应的类的实例,类似于java里面的反射机制。 二、问题描述 对于给定的类,我们可以采取CSampClass *m_pSampClass=new CSampClass
2012-06-28 14:30:29 1007
原创 序列化--画图问题
通过存档存储及加载 CObject (见前) 下面用一个示例来解释这个问题。 目标:一个画图程序,通过保存打开按钮存取图片。方法:保存图片绘制信息。 按步骤: l 创建可序列化的类 ->Graph.cpp+Graph.h l 在 View 类中添加对控件的响应,实现画图功能,每次鼠标弹起的时候保存绘图信息 l 保存文件(通过
2012-06-28 09:02:05 1071
转载 CString,int char*之间的转换
string 转 CString CString.format("%s", string.c_str()); char 转 CString CString.format("%s", char*); char 转 string string s(char *); string 转 char * char *p = string.c_str(); CSt
2012-06-27 17:44:57 703
原创 MFC序列化技术的实现
、需求对于支持序列化操作的类可以将不同类的不同对象以序列的形式写到文件中;可以通过读取序列化文件还原对应类的对应实例;针对对象的哪些内容进行序列化由对象来决定;2、需求示例2.1、需要序列化的对象对应的类l CNameclass CName:public CObject {public: DECLARE_SERIAL(CName
2012-06-27 17:42:29 1439
转载 MFC如和将类封装到DLL以及调用
*1、先用mfc向导生成静态dll文件。*2、编辑增加类;*3、生成dll文件和lib文件;*4、将生成的dll和lib,和类的头文件复制到需要引用的文*件exe下;*///导出dll的头文件myClass.h#define DLLimport __declspec(dllimport)#define DLLexprot __declspec(dllexport)
2012-06-27 17:40:50 7658 1
转载 MFC 序列化一点研究
最近“下岗”在家,前一段时间一直在研究MFC的源代码,觉得越是深入越是有意思,特别是最近一周对MFC中对于序列化的支持,总算是研究明白它的整个实现过程,对于序列化的一点分析见解如下,如有不正确的地方,还请多多指教。 序列化主要涉及到一个是写入磁盘,一个是如何从磁盘中读出数据,特别是如何写入一个Object,下面以一个例子来说明过程. class CMyObject:publ
2012-06-26 20:23:17 7464
原创 MFC 序列化总结
问题如下:需要一个能够自由画图的程序,比如可以自由画直线,圆,椭圆等图形。同时,在画完图形以后,可以保存即序列化。个人认为难点:如何实现多个类的对象序列化到同一个文件。思来想去最好的办法就是利用类的多态。可以实现让直线,圆,椭圆都继承与Geometry类(自定义),利用多太将它们的操作统一。代码如下:class CLine : public Geometry {p
2012-06-26 20:21:36 1539
转载 C++ 序列化 反序列化
序列化又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制。其目的是以某种存储形成使自定义对象持久化,或者将这种对象从一个地方传输到另一个地方。 .NET框架提供了两种串行化的方式:1、是使用BinaryFormatter进行串行化;2、使用SoapFormatter进行串行化;3、使用XmlSerializer进行串行化。第一种方式提供了一个简单的二进制数据流以及某些附加的
2012-06-25 14:24:44 9346 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人