- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows消息传递机制详解
用户是如何跟应用软件打交道的
我们来看看,用户究竟是如何与应用软件打交道的(用户不需要知道这个具体过程,但应用软件的开发人员必须知道),如下图所示:
? ? ? ?从上图可以看到:在物理上,离用户最近的实际上是输入输出设备,下面我们看看上图中1-6这六个步骤分别表示什么意思(为了简便,在叙述时,我们的标号没有用圆圈):
? ? ? 1. 用户点击鼠标或者键盘;
? ? ? 2. Windows感觉到了鼠标或键盘的动作;
? ? ? 3.?Windows把这个消息告诉应用程序;
? ? ? 4. 应用程序告诉Windows去做事,实际上就是应用程序调用Windows的API函数;
? ? ? 5. Windows让输出设备做事;
? ? ? 6. 用户获得输出。
? ? ? 对用户来说,没有必要了解输入输出设备和Windows的相关知识。对程序员(写应用程序的人)来说,没有必要了解输入输出设备,但是必须了解Windows的基本知识。在下面的叙述中,我们就不管输入输出设备了。
? ? ? 上面的过程还是很笼统,为了弄得更清楚,我们有必要了解Windows的消息机制,如图:
? ? ? 下面,我们来慢慢描述(上图中的虚线表示消息的流程):
? ? ? ?step0: 程序员编程,把WinMain函数和窗口回调函数写好;
? ? ? ?step1: Windows调用WinMain函数,启动应用程序,Windows会建立一个消息队列,用来存储消息。
? ? ? ?step2: WinMain函数调用Windows的API函数,比如调用CreateWindow和ShowWindow, 从而生成并显示一个窗口。在调用CreateWindow函数时,会产生一个消息,这个消息并不进入消息队列,但窗口的回调函数仍然会处理,在此,我们不讨论非队列消息。
? ? ? ?step3: WinMain函数调用Windows的API函数,比如调用GetMessage来从消息队列中取出消息。假设用户这个时候在窗口中点击鼠标,那么Windows会把这个事件包装成消息,投到消息队列中,GetMessage会取出这个消息,通过DispatchMessage送到Windows;
? ? ? ?step4: Windows进而会将该消息发送到窗口的回调函数,并对该函数进行调用;
? ? ? ?step5:窗口的回调函数可以对这个消息进行相应处理,这个处理的具体方法由程序员自己决定,通常是调用Windows的API函数来实现处理。
HYPERLINK /evankaka/article/detailsWindows消息传递机制详解
? Windows是一个消息(Message)驱动系统。Windows的消息提供了应用程序之间、应用程序与Windows系统之间进行通信的手段。应用程序想要实现的功能由消息来触发,并且靠对消息的响应和处理来完成。必须注意的是,消息并非是抢占性的,无论事件的缓急,总是按照到达的先后派对,依次处理(一些系统消息除外),这样可能使一些实时外部事件得不到及时处理。
????? Windows的应用程序一般包含窗口(Window),它主要为用户提供一种可视化的交互方式,窗口是总是在某个线程(Thread)内创建的。Windows系统通过消息机制来管理交互,消息(Message)被发送,保存,处理,一个线程会维护自己的一套消息队列(Message Queue),以保持线程间的独占性。队列的特点无非是先进先出,这种机制可以实现一种异步的需求响应过程。
目录:
1、消息
2? 、消息类型
3 、消息队列(Message Queues)
4 、队列消息(Queued Messages)和非队列消息(Non-Queued Messages)
5 、PostMessage(PostThreadMessage), SendMessage
6 、GetMessage, PeekMessage
7 、TranslateMessage, TranslateAccelerator
8、(消息死锁( Message Deadlocks)
9、BroadcastSystemMessage
10、消息的处理
11、MFC的消息映射
12、消息反射机制
1、消息
??? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键
都会使Windows发送一个消息给应用程序。
??? 消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单
您可能关注的文档
- SMC电磁阀选型手册.doc
- 3MOS认证考试简介2016.8教程.pptx
- SMC电磁阀上海总代理资料.doc
- SIS使用说明.docx
- SOPSB-000-00传递窗使用、清洁、维护标准操作规程.doc
- SQL Server数据库创建.ppt
- s7300-400第3章程序设计.ppt
- 3S旋流单立管系统教程.ppt
- SQL SERVER 2014配置数据收集.docx
- 3D打印教程.pptx
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
文档评论(0)