问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请教API应用程序的消息响应过程,详解

发布网友 发布时间:2022-06-02 13:20

我来回答

1个回答

热心网友 时间:2023-10-25 04:27

OS有自己的消息队列和消息循环,至于消息处理工作OS自己可以完成;
同时OS为当前运行的每个Windows应用程序也建立了各自的消息队列,该应用程序的消息循环和消息处理函数(窗口过程函数)需要由应用程序的代码来编写,但是这些应用程序的消息循环和窗口过程函数中的实现操作,还必须依靠OS来完成。(如消息循环中的GetMessage, TranslateMessage, DispathMessage; 窗口过程中的PlaySound, BeginPaint, GetClientRect, DrawText等都是调用OS来实现的。)
Windows中的消息通常来自两种情况:
鼠标、键盘或时钟等用户操作(又可称为进队消息); 或者调用某些特定的Windows函数(如CreateWindow,ShowWindow,UpdateWindow时产生的)(又可称为不进队消息)<这里的进队、不进队中的队列指的是应用程序的消息队列>
产生的消息传输和处理过程如下:
不进队消息:首先被OS自动捕获,加入OS自己的消息队列中,当轮到该消息的时候,OS直接调用应用程序的消息处理函数(窗口过程WndProc),把该消息传给该函数,WndProc中的switch-case语句进行判断,然后调用相应条件下的系统函数如PlaySound等,做出响应,没有case的,调用系统默认的处理方法DefWindowProc。(这部分的消息通常不是来自用户的输入,而是来自于调用特定的Windows函数是产生的,如CreateWindow,ShowWindow,UpdateWindow等);
进队消息:用户操作后产生的消息,首先由OS捕获,OS将这些消息添加到应用程序自己的消息队列中,在程序中,应用程序的消息循环代码,不断地从自己的消息队列中取出消息(其实还是借助OS的GetMessage函数来去自己的消息),并将该消息键盘转换(还是借助OS,即调用OS的TranslateMessage函数完成),最后将消息分发(同样需借助OS,并由OS的DispatchMessage函数将这些消息分发,也就是由OS将这些消息传给应用程序的窗口过程WndProc函数,做switch-case处理。分发给OS的消息,OS可能仍旧需要放入自己的消息队列中。)
综上可以看到,其实绝大多数的操作必须通过OS来完成,即使是应用程序自己的消息循环和窗口过程,都需要调用大量的OS函数来实现如GetMessage,PlaySound等等。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
3倍的根号2与2倍的根号3哪个大越详细越好 3倍根号二比2倍根号三大还是小 老平板电脑能玩什么游戏有什么单机游戏适合在平板电脑上玩的 汶川空降15勇士的惊天一跳,为什么至今都说难度极高? ...空降兵为什么要在4999米高空跳下?为什么用那么高? 欢乐斗地主 欢乐斗地主怎么换男女角色? 欢乐斗地主 欢乐斗地主主题界面在哪里换? 五粮液怎么没实体店 拼多多有哪些口碑较好的五粮液品牌店铺? cpa满分和及格的区别 30万贷款,60个月,年化11‰,等额本息,每个月要还多少本金,多少利息? 一年化利率11,85曰利率是多极 年化收益率是11%,1万元1个月收益是多少呢?一年收益又是多少呢? 机械工业苏州技工学校 谈谈您认为执业药师的社会角色定位应如何转变 中国地质大学的宝石及材料工艺学专业怎么样 谁有长春的高中地理资料啊,给拷一份啊!!求! 0.5千克黄金体积是多少? 长春安冶油品有限公司怎么样? 长春市鸿福润滑油有限公司怎么样? 怎么我练手臂的肌肉练了以后觉得粗了呢,是没有多余的脂肪才会这样的么,不是练练细的么 吉林盐业集团长春有限公司怎么样? c135是哪个公司研制的飞机? 长春一汽四环腾达油脂化工有限公司怎么样? 吉林长春宝格丽手表一般多长时间做一次清洗保养比较好呢 高分急求:关于减肚子及手臂增粗的问题 求美军C-135特殊使命飞机 的资料 长春宝石制油有限公司怎么样? 我很瘦,最近在锻炼增肌增肥,现在一个月肌肉出来了 手臂明显变粗,为什么体重不增加 北京断桥铝门窗阳光房定制安装厂家推荐! 厨房里,妈妈不小心把绿豆和小米混在了一起,你能帮她想办法把绿豆和小米分开吗? 厨房洗碗水槽被小米粥堵怎么办 拔智齿,本身圆脸,戴牙套后脸型会怎样 应届毕业生在没毕业的时候去应聘.在简历学位的那一栏怎么填?是本科在读??还是学士学位??? 父亲的百日祭祀,想给他烧点纸钱,信封怎么写呢 3d建模 建成一个人物需要多长时间 地区餐酒(VDP)是什么级别的酒 oracle 9i的端口号怎么看?能不能改? 葡萄酒 餐级是什么意思 Oracle数据库Net Configuration Assistant打不开 美的冰箱1220*760*1950是什么型号 想去单招学习计算机编程之类的,郑州工商学院和郑州财经学院我看了不知道好不好,求告知,两个学校哪个 污水处理厂设备有哪些 重庆解放碑到壁山天佑山水国际多少公里? 壁山地铁站到大路健康城坐出租车要多少钱? 忒的解释是什么? 璧山到江津公交车高速公路 男的对女的说你真忒。什么意思 忒累你了是什么意思? 璧山县其他璧青路怎么去,众泰汽车璧山专营店的地址