消息映射与消息路由原理
映射:通过declare_map宏 begin_message_map 与end_message_map完成
路由:通过CcmdMsg 完成。
控件通知消息(WM_****)与命令消息(WM_COMMAND消息)的路由过程不一致,如Win32程序存在windowProc函数,然后其内部实现中存在控件通知消息和命令消息的判断(如下),控件通知消息不会进入OnCommand函数(OnCommand函数实现中存在CcmdMsg函数),也就不会进出CcmdMsg函数,相反,WM_COMMAND消息会进入CcmdMsg函数,从而完成诡异的消息路由过程。
1 void WindowProc(){ 2 if(nMsg == WM_COMMAND){ 3 OnCommand(); 4 return DefWindowProc(); 5 } 6 7 } 8 9 10 /// 因为windowProc是虚函数,当指定类没有调用时,会调用父类的windowProc,这样完成消息往父类推去的原理。
控件消息(直接把消息往父类推去):CView --> CWnd -->CCmdTarget
CFrameWnd -->CWnd --> CCmdTarget
命令消息(不一样的消息路由过程):CView -->CWnd --> CCmdTarget
-->CDocument ---> CCmdTarget
CFrameWnd --> CView -->CWnd --> CCmdTarget
--> CDocument ---> CCmdTarget
--> CWnd --> CCmdTarget
--> CWinApp-->CCmdTarget
转载于:https://www.cnblogs.com/xuxu8511/archive/2012/10/21/2732898.html
消息映射与消息路由原理相关推荐
- Windows消息映射及消息发送(SendMess、PostMess)实现
最近在看linux系统书籍看到消息调度方面,便动手封装一个类似MFC简易的消息发送框架(参考实例,没有窗口句柄). 关于框架设计的几点介绍: 1.设计采用了自动释放消息节点方式(增加虚析构函数 ...
- 【MFC】MFC消息映射(二)
00. 目录 文章目录 00. 目录 01. 概述 02. 消息映射宏 2.1 BEGIN_MESSAGE_MAP 2.2 DECLARE_MESSAGE_MAP 2.3 END_MESSAGE_MA ...
- MFC 教程【4_消息映射的实现】
消息映射的实现 Windows消息概述 Windows应用程序的输入由Windows系统以消息的形式发送给应用程序的窗口.这些窗口通过窗口过程来接收和处理消息,然后把控制返还给Windows. 消息的 ...
- 【MFC】MFC消息映射
00. 目录 文章目录 00. 目录 01. 概述 02. 消息映射宏 2.1 BEGIN_MESSAGE_MAP 2.2 DECLARE_MESSAGE_MAP 2.3 END_MESSAGE_MA ...
- 【转】MFC消息映射详解(整理转载)
消息:主要指由用户操作而向应用程序发出的信息,也包括操作系统内部产生的消息.例如,单击鼠标左按钮,windows将产WM_LBUTTONDOWN消息,而释放鼠标左按钮将产生WM_LBUTTONUP消息 ...
- MFc消息映射机制理解
何谓消息.消息处理函数.消息映射? 消息简单的说就是指通过输入设备向程序发出指令要执行某个操作.具体的某个操作是你的一系列代码.称为消息处理函数.在SDK中消息其实非常容易理解,当窗口建立后便会有一个 ...
- 【MFC系列-第9天】MFC消息映射机制的原理
关注公号[逆向通信猿]更精彩!!! 第9天 MFC消息映射机制的原理 9.1 对话框常用的回调函数 a)窗口创建时的消息和虚函数包括:WM_CREATE,WM_INITDIALOG,和PreSubcl ...
- VC++/MFC消息映射机制(1):MFC消息映射原理
VC++/MFC消息映射机制(1):模仿MFC的消息映射原理 本文为原创文章,转载请注明出处,或注明转载自"黄邦勇帅(原名:黄勇) <C++语法详解>网盘地址:https://p ...
- JAVA消息服务JMS规范及原理详解
一.简介 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进 ...
- 消息中间件:RocketMQ 介绍(特性、术语、原理、优缺点、消息顺序、消息重复)
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 消息中间件的作用 1. 应用解耦 2. 异步处理 比如用户注册场景,注册主流程完成以后,需要调用邮件 ...
最新文章
- 20、30、40岁年轻人,2020年的建议 转载
- 深度优先搜索(DFS)相关习题
- 面向企业级前端应用的开发框架 UI5 的发展简史介绍
- Bash Shell学习笔记四
- couchbase_具有Rx-Java的Couchbase Java SDK
- 2020年中国互联网租车报告
- 译文 | 与TensorFlow的第一次接触 第三章:聚类
- spark基础之基于yarn两种提交模式分析
- Javascript实现视频文件播放功能
- 本地缓存下载文件,download的二次封装
- 肯德尔系数怎么分析_如何通过修改数据提高肯德尔系数?
- GitHub 开源神器 Bark模型,让文本转语音更简单
- 开发者大会优先谈云,对于微软Win10还重要吗
- watermark-dom 添加水印使用方法
- 卸载亚信的安全杀毒软件
- 当前计算机什么专业好就业找工作,计算机哪个专业最好就业
- 配置NTP时间客户端
- 如何同时对多张图片进行批量裁剪、批量旋转方向
- jQuery 的运行机制(How jQuery Works)
- java毕业设计——基于java+Socket+sqlserver的办公自动化系统设计与实现(毕业论文+程序源码)——办公自动化系统
热门文章
- 拜托!你只会用 ! = null 判空?
- 阿里“拆台”,中台真的不香了?
- 系统架构设计理论与原则、负载均衡及高可用系统设计速记
- 架构师必备之最全最系统的 Android 界面性能调优资料
- 来几个 9 块 9 好吃零食
- python爬虫百度翻译997_python爬取百度翻译返回:{'error': 997, 'from': 'zh', 'to': 'en', ......
- [bzoj1033] [ZJOI2008]杀蚂蚁 Big MoNI
- sql语句回忆录1-多表连接子查询
- 数据结构之-冒泡排序
- 我碰到的到现在为止,还没有找到比较好的解决方法的sps问题