说到消息,在MFC中,“最熟悉的神秘”可算是消息映射,那是我们刚开始接触MFC时就要面对的东西.有过SDK编程经验的朋友转到MFC编程的时候,一下子觉得什么都变了样.特别是窗口消息及对消息的处理跟以前相比,更是风马牛不相及的.如文档不是窗口,是怎样响应命令消息的呢? 初次用MFC编程,我们只会用MFC ClassWizard为我们做大量的东西,最主要的是添加消息响应.记忆中,如果是自已添加消息响应,我们应何等的小心翼翼,对BEGIN_MESSAGE_MAP()……END_MESSAGE_MAP(…
作为C++程序员,我们总是希望自己程序的所有代码都是自己写出来的,如果使用了其他的一些库,也总是千方百计想弄清楚其中的类和函数的原理,否则就会感觉不踏实.所以,我们对于在进行MFC视窗程序设计时经常要用到的消息机制也不满足于会使用,而是希望能理解个中道理.本文就为大家剖析MFC消息映射和命令传递的原理. 理解MFC消息机制的必要性 说到消息,在MFC中,“最熟悉的神秘”可以说是消息映射了,那是我们刚开始接触MFC时就要面对的东西.有过SDK编程经验的朋友转到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函数作…
1. 仿真MFC目的:以MFC为例,学习application framework的内部运行.MFC六大关键技术: (1)MFC程序的初始化过程 (2)RTTI(Runtime Type Information)运行时类型识别 (3)Dynamic Creation 动态创建 (4)Persistence 永久保存 (5)Message Mapping 消息映射 (6)Message Routing 消息传递(回溯) 2. MFC数个最重要的类的层次结构: 3. 以下范例展示了类层次及其成员(对…
题外话:刚开始学视窗程序设计的时候,我就打印了一本Windows消息详解,里面列举了各种已定义消息的意义和作用,共10多页,在编程的时候翻翻,有时觉得很受用.我发觉很多编程的朋友,虽然每天都面对消息,却很少关注它.C++程序员有一个通病,很想写“自己”的程序,即每一行代码都想自己写出来.如果用了一些库,总希望能完全理解库里的类或函数是怎么一回事,否则就“不踏实”.对于消息,许多朋友只关心常用的几个,对其余的漠不关心.其实,Windows中有很多不常用的消息却很有用,程序员可能通过响应这些消息实现…
0:MFC类层次结构 1:MFC程序的初始化过程CWinApp::InitApplication()CMyWinApp::InitInstance()CMyFrameWnd::CMyFrameWnd()CFrameWnd::Create()CWnd:CreateEx()CFrameWnd::PreCreateWindow()CWinApp::Run()CWinThread::Run() 2:RTTI[CRuntimeClass]DECLARE_DYNAMICIMPLEMENT_DYNAMIC 3…
1. 消息分类: 2. 万流归宗——Command Target(CCmdTarget): 3. "消息映射"是MFC内建的一个信息分派机制.通过三个宏(DECLARE_MESSAGE_MAP/BEGIN.../ON.../END...)完成消息网的建构. 4. 注意:CWinThread派生自CCmdTarget,但没有DECLARE_/BEGIN_/END_宏组. 5. 消息映射与虚函数: 6.MFC2.5在AfxWinInit之中,自动为程序注册四个Windows窗口类,并且把窗…
1. 消息映射表的组成 宏DECLARE_MESSAGE_MAP,用在类的声明中,用来声明消息映射表. 宏BEGIN_MESSAGE_MAP,在使用类声明外,用来定义链接节点和填写链表节点中的数据,其格式为BEGIN_MESSAGE_MAP(类名称, 基类名称). 宏ON_XXXX,用于填写类消息映射表中的单个表项,使用在BEGIN_MESSAGE_MAP的后面. 宏END_MESSAGE_MAP,消息处理函数表的结束宏,是表示消息映射表结束的标志. 2. 单个表项的消息类型 标准消息/窗口消息…
////////////////////////////////////////////////////////////////////////////////////                     /********* 文章系列:MFC技术内幕系列***********/                     /************MFC技术内幕系列之(四)***********/                     /*****文章题目:MFC消息映射与消息传递内幕***…
MFC六大核心机制概述 我们选择了C++,主要是因为它够艺术.够自由,使用它我们可以实现各种想法,而MFC将多种可灵活使用的功能封装起来,我们岂能忍受这种“黑盒”操作?于是研究分析MFC的核心机制成为必然. 首先,列出要讲的MFC六大核心机制: 1.MFC程序的初始化.        2.运行时类型识别(RTTI).        3.动态创建.        4.永久保存.        5.消息映射.        6.消息传递. 本文讲第一部分,MFC程序的初始化过程. 简单的MFC窗口程…