Windows消息基本概念及消息系统(第一讲)
2017-09-14 18:24
274 查看
一、消息的基本概念
•消息(Message)指的就是Windows 操作系统发给应用程序的一个通告,它告诉应用 程序某个特定的事件发生了。比如,用户单击鼠标或按键都会引发Windows 系统发送相应 的消息。最终处理消息的是应用程序的窗口函数,如果程序不负责处理的话系统将会作出默 认处理。
•
从数据结构的角度来说,消息是一个结构体,它包含了消息的类型标识符以及其他的 一些附加信息。比如对于鼠标单击产生的消息而言,它就包含了窗口句柄、此消息的常量标识符、鼠标的位置坐标等相关信息。
•
Windows系统定义了许多消息常量,包括标准的Windows消息、通知消息、命令消息等等。这些消息常量通常具有XX_YYYY的形式,其他XX通常代表消息的类型,而后面的YYYY通常是这个消息所对应事件的英文缩写。比如WM_LBUTTONDOWN代表的事件就是按下了鼠标左键。
二、windows的消息系统
Windows的消息系统由3个部分组成:•
消息队列。Windows操作系统本身维护了一个系统消息队列,而对于每一个正在执行的Windows应用程序,系统会为其建立一个应用程序消息队列。应用程序可以从这个消息队列中获取消息,然后分派给对应的窗口。
•
消息循环。Windows应用程序中都包含了一段称作“消息循环(也称消息泵)”的代码,用来从消息队列中检索消息并把他们分发到相应的窗口函数中。正是这个消息循环使得一个应用程序能够响应外部的各种事件,所以消息循环往往是一个Windows应用程序的核心部分。
•
窗口函数(也叫窗口过程)。最终为了处理各种消息,Windows应用程序所创建的每个窗口(广义,包括实际窗口、控件等诸如此类的的内容)都会在系统中注册一个相应的窗口函数,此窗口函数从形式上看一个巨大的switch语句,用以处理由消息循环发送到该窗口的各种消息。窗口函数是一种回调函数(Callback Function),也就是说,它是由Windows操作系统负责调用的,而应用程序本身不能调用它。
Windows操作系统中的消息从发生到被处理一般有5个步骤:
(1)系统发生了一个事件。
(2)Windows系统把事件翻译为对应的消息,并把它放到消息队列中。
(3)应用程序从消息队列中获取消息,然后把它封装在TMsg结构中。
(4)应用程序通过消息循环把消息分派给对应的窗口函数。
(5)窗口函数负责最终处理这个消息。
下图显示了这样的处理过程
相关文章推荐
- 推荐系统实战 初学之路笔记(1)--推荐系统基本概念
- 计算机系统基本概念概述
- 数据库系统原理(一)——数据库系统基本概念
- 消息队列技术之基本概念
- 深入理解计算机系统:汇编基本概念
- kafka分布式消息队列 — 基本概念介绍
- [Win32]窗口的创建以及消息响应基本概念
- Bitmap基本概念及在Android4.4系统上使用BitmapFactory的注意事项
- Android系统应用程序基本概念解读
- Linux/Unix系统编程-基本概念
- 数据库系统基本概念
- SMS基本概念和移动通信系统介绍
- 消息推送系统——(一)概念与原理
- 分布式系统基本概念(一致性、数据分布、复制策略、分布式协议)
- 陈越、何钦铭《数据结构》第一讲基本概念 笔记
- 消息队列(Message Queue)基本概念和使用场景分析
- 第一讲 基本概念
- 使用SQL Server Profiler监视系统的一些基本概念和各种事件的监视
- Bitmap基本概念及在Android4.4系统上使用BitmapFactory的注意事项
- 文件系统API的基本概念