Windows消息基本概念及消息系统(第一讲)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/johnlaoxing/article/details/77983753

一、消息的基本概念


消息(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)窗口函数负责最终处理这个消息。

下图显示了这样的处理过程
这里写图片描述

猜你喜欢

转载自blog.csdn.net/johnlaoxing/article/details/77983753
今日推荐