MFC 几大关键技术 自学笔记

1. RTTI

运行时类型识别:在程序执行过程中能够判断a对象是否是A类,返回true或者false;

类别型录网:用来记录类之间的关系,以链表的形式记录必要的信息,供查询;

CRnutimeClass:用来刻画类别型录中用来记录类信息的链表,包含类名,next指针、static first指针;

宏定义DECLARE_DYNAMIC、IMPLEMENT_DYNAMIC 将CRuntimeClass添加到类中

2.动态创建

将对象的大小与创建函数都放到类别型录中,根据他们就可以在运行时创建对象。

相关的宏:DECLARE_DYNCREATE、IMPLEMENT_DYNCREATE,在DECLARE_DYNAMIC基础之上增加了对象大小和创建函数

顺着指向基类的指针寻找

3.Persistence机制

涉及到Document/View结构对文件的读写:Serialize

每一个可读可写文件的类都要重写自己的Serailize类,负责自己数据的读写任务,还应该重载<<和>>,将数据倒到archive中(它是与文件缓冲区习习相关的缓冲区)

相关的宏:DECLARE_SERIAL、IMPLEMENT_SERIAL 将serialize放到类中

4.

4.1 Message Mapping

将消息与对应的处理函数对应起来

相关宏:DECLARE_MESSAGE_MAP(.h); (.cpp) BEGIN_MESSAGE_MAP  ON_COMMAND()  END_MESSAGE_MAP()

构建了一个消息传递网(如何构建的??)

4.2 Command routing(消息路由)

-Windows消息(WM_)往基类走

-命令WM_COMMAND就不一定

Run()中的AfxWndProc()是消息泵,最终调用pWnd->WindowProc(),依靠虚函数来实现消息路由

时间: 2024-10-11 12:26:46

MFC 几大关键技术 自学笔记的相关文章

MFC六大关键技术

视频教程地址观看:http://pan.baidu.com/s/1mhKQ6kK 1.MFC六大关键技术sada)MFC程序的初始化过程:从CWinApp类派生一个应用程序类:使用派生类定义的全局变量(theApp):在预定义头文件"stdafx.h"中,禁用"windows.h"取而代之afx开头的MFC头文件:编译设置中选择用"Use MFC in a Static Library":在CWinApp生类中,重写InitInstance函数作

Caffe关键技术之仿真(一)

源 从当年流行的”编程高手必读Linux源码“,到市面上各色各样的XXX源码解析.剖析,我们已经看过太多太烂的源码分析. 读一份源码最痛之处在于,突然蹦出一大段代码,数据结构一个认不得,也不知道变量从何而来,函数更看都不懂. 似乎,那些很烂的作者,总喜欢迎难而上,你越不喜欢大段代码,他就每次首先贴一大段代码. 丝毫不对顺序做优化,也不知道标记出什么是重要的,什么是不重要的,连一份概况都没有. 这不叫源码分析,这叫随堂笔记. 高中时候,曾经拜读过侯捷老师的<深入浅出MFC>,其中最有趣的是它的第

VC++/MFC(VC6)开发技术精品学习资料下载汇总

工欲善其事,必先利其器,VC开发MFC Windows程序,Visual C++或Visual Studio是必须的,恩,这里都给你总结好了,拿去吧:VC/MFC开发必备Visual C++.Visual Studio.MSDN等下载汇总,甭客气~  啊?还没有开始学C++?那你先学习C++语言基础吧,C/C++语言基础学习资料及视频教程请看这里. 史无前例的网络最全最强C/C++资料索引: C/C++编程语言学习资料尽收眼底 电子书+视频教程 VC++/MFC(VC6)开发技术精品学习资料下载

Java多线程技术学习笔记(二)

目录: 线程间的通信示例 等待唤醒机制 等待唤醒机制的优化 线程间通信经典问题:多生产者多消费者问题 多生产多消费问题的解决 JDK1.5之后的新加锁方式 多生产多消费问题的新解决办法 sleep和wait的区别 停止线程的方式 守护线程 线程的其他知识点 一.线程间的通信示例 返目录回 多个线程在处理同一资源,任务却不同. 假设有一堆货物,有一辆车把这批货物往仓库里面运,另外一辆车把前一辆车运进仓库的货物往外面运.这里货物就是同一资源,但是两辆车的任务却不同,一个是往里运,一个是往外运. 下面

大型网站系统架构演化和关键技术普及课程

大型网站系统架构演化和关键技术普及 课程观看地址:http://www.xuetuwuyou.com/course/40 课程出自学途无忧网:http://www.xuetuwuyou.com/ 了解大型网站的架构是如何一步步进行演变和改进的,并对其中的一些关键技术知识做普及. 课时1:原始架构的诞生 课时2:缓存的介绍 课时3:集群&负载均衡 课时4:数据库分库分表演变 课时5:CDN&反向代理等技术手段 课时6:分布式服务&空节点等技术手段

CSS自学笔记(10):CSS3盒子模型

CSS3为CSS技术的升级版本.最新版本. 就CSS而言,它是一个模块,是一个庞大而又复杂的模块,但是在CSS3中,将这一个庞大的模块分解为一个个容易理解的同时又很精简的小模块,同时CSS3中又添加了一些新的模块,所以CSS3朝着模块化的方向发展. CSS3中比较重要的模块有:选择器.盒子模型.背景和边框.文字特效.2D/3D转换.动画.多列布局.用户界面. CSS3的选择器常用的和CSS选择器差不多. CSS3 盒子模型 盒子模型是CSS3很重要的一个模型,它是指元素以何种方式显示以及元素间如

CSS自学笔记(13):CSS3 2D/3D转换

CSS3中新增了对元素进行2D和3D的转换效果,这样可以是开发人员很方便的做出视觉效果更好的网页来. 通过CSS3中属性的定义,我们可以对元素进行移动.缩放.拉伸.旋转等等,可以通过定义transform属性来实现转换效果. 浏览器支持 属性 浏览器支持 2D transform IE Firefox Chrome(-webkit-) Safari(-webkit-) Opera 3D transform IE Firefox Chrome(-webkit-) Safari(-webkit-)

小梅科普:Unity客户端架构设计与网络游戏关键技术

目前利用Unity开发移动端游戏越来越多,不论是游戏公司还是独立开发者都需要在移动互联网时代发挥各自的技术优势,把自己的产品做到最好占领市场.本课程介绍的是基于Unity客户端框架设计以及关键技术3DAvatar换装和热更新技术实现以及Protobuf-net序列化和反序列化的运用,只有掌握了Unity开发的关键技术才能将其运用在游戏开发中,对于快速的开发游戏占领市场至关重要. 本课程以此项目的开发为讲解内容,以目前游戏开发的关键技术为依据,由浅入深循序渐进进行介绍,绝大部分的代码的编写都有相应

Java自学笔记(一)

假期重新拾起Java来学,先是拿来<Think in Java>看,但不幸的是,那本书真心有点生涩乏味.于是上豆瓣寻找到一本李刚老师写的<疯狂Java讲义>,这几天看了一百来页,来总结总结.网上对于此书的评论,捧的大致上说这本书相对于国外教材来说,语言贴近中国人思维,容易理解,而且内容翔实:批的说这本书太罗嗦,让人捉不到重点.实际上,就我这几天的阅读看来,这本书是非常适合我的,在细节方面的解释,以及在底层原理的揭示,在我看来,正是学习一门新语言不可或缺的东西. 对于像我这样从汇编语