操作系统-消息,消息队列

article/2025/9/1 10:32:19

消息,消息队列

1. 消息

       在windows 程序中,消息是由MSG 结构体来表示的。MSG 结构体的定义如下:

typedef struct tagMSG
{HWND hwnd;UINT message;WPARAM wParam;LPARAM lParam;DWORD time;POINT pt;
}MSG;

该结构体中各成员变量的含义如下:
hwnd :表示消息所属的窗口。在Windows 程序中,用HWND 类型的变量来标识窗口。
message :变量指定了消息的标识符。在Windows 中,消息是由一个数值来表示的,不同的消息对应不同的数值。但是由于数值不便于记忆,所以Windows 将消息对应的数值定义为WM_XXX 宏(WM 是Window Message 的缩写)的形式,XXX 对应某种消息的英文拼写的大写形式。例如,鼠标左键按下的消息是WM_LBUTTONDOWN,键盘按下消息是WM_KEYDOWN,字符消息是WM_CHAR 等等。在程序中,我们通常都是用WM_XXX 宏的形式来使用消息的。
wParam 和lParam 用于指定消息的其他附加信息。比如,当我们收到一个字符消息的时
候,message 成员变量的值就是WM_CHAR,但用户输入的是那些字符,就由wParam 和
lParam 来说明。wParam、lParam 表示的信息随消息的不同而有变化。
time 和pt 分别表示消息投递到消息队列的时间和鼠标的当前位置。

2.消息队列

       每一个WindowS应用程序开始执行后,系统都会为该程序创建一个消息队列,这个消息队列主要用来存放该程序创建的窗口的消息。
       例如,当你在窗口中画图的时候,按下鼠标左键,此时,操作系统就会感知到这个事件,于是操作系统就将这个事件包装成一个消息,投递到该应用程序的消息队列中,等待该应用程序获取消息,然后处理。然后应用程序通过一个消息循环不断地从消息队列中取出消息,并响应。
       其实在上述的过程中,操作系统会给应用程序‘发送消息’。所谓的‘发送消息’,实际上是操作系统调用应用程序中一个专门负责处理消息的函数,这个函数叫做窗口过程。
       再举个例子,就比如你对word进行了最小化操作,这一操作不是word文档进行的操作,而是由操作系统捕获到这个最小化的操作,然后将这个最小化消息发送给word应用程序的消息队列,然后word程序通过循环从消息队列获取到这个最小化消息。然后word将该消息分发给操作系统,接着操作系统感应到这个消息,紧接着就会调用回调函数。
如下是一个消息调用的流程图:
在这里插入图片描述
       其实windows维护着一个系统消息队列,以及分别为每个GUI线程维护一个各自的线程消息队列。为了避免非GUI线程的创建线程消息队列的开销,所有线程创建初始化时,均不创建消息队列。只有当线程第一次调用GDI函数时,系统才会为线程创建消息队列。所以那些非GUI线程是没有消息队列的。
       每当用户移动鼠标,点击按钮或键盘时,鼠标或键盘的设备驱动程序会将输入转换成消息,并将消息放在系统消息队列里。删windows会检查自己的消息队列,如果消息队列不为空,则每次取出并删除一个消息,然后确定消息的目标窗口,然后把消息放到创建这个窗口的线程的线程消息队列里。线程的消息队列接收由线程创建的窗口的所有的鼠标和键盘消息。然后线程会从队列中删除信息,并告诉系统把它们派发到对应的窗口消息处理函数。

       学习的路上总有那么些喷子,总有些恶心的像屎一样的嘴会怼你,没必要理会,相反更应该加油学习,以技术反击。
如果觉得本文对你有用,可以使用微信扫一扫支持一下。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/0hPHMkKI.shtml

相关文章

LTE系统信息(3)-系统信息变更

1.为什么需要加入系统信息变更机制 从《LTE系统信息(2)-SIB的周期调度》里我们已经知道,UE所需的系统信息绝大多数都包含在不同的SIB块里,分别由SIB1消息和SI消息广播到UE。携带的这些参数信息一般情况下都不会发生变化&#xff…

UE接入LTE网络过程——获取小区系统信息和随机接入

1 系统信息 小区搜索过程之后,UE已经与小区取得下行同步,得到小区的PCI以及检测到系统帧的timing(即10ms timing)。接着,UE需要获取到小区的系统信息(System Information),这样才能…

【5G RRC】5G系统消息介绍

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

LTE网络有关系统消息(MIB/SIB)深度解析

LTE网络有关系统消息(MIB/SIB)深度解析 参考链接:https://mp.weixin.qq.com/s?__bizMzU1NjU5ODg3NQ&mid2247485713&idx1&sn5f3ccfa33f6ef9713a4246041d5499ae&chksmfbc3da25ccb453337432d64587f7fe005e9a102cc6ff42f9fef14…

LTE系统信息 --- 系统信息变更

1.为什么需要加入系统信息变更机制 世事无绝对,考虑到网侧某些特定情况下可能需要对一些参数进行修改,比如修改SIB1中的RACH参数,或者修改SIB2中的ac-BarringInfo参数,因而需要增加一种机制,可以让SIB参数有变更的时候…

5G NR系统信息

1. 概述 5G NR系统信息包括主信息块(MIB,Master Information Block)以及一系列的系统信息块(SIB,System Information Block)。根据系统信息中所包含的内容,可以将其分为Minimum SI以及Other SI…

第2章 系统信息(System Information)

小区搜索过程之后,UE已经与小区取得下行同步,得到小区的PCI(Physical Cell ID)以及检测到系统帧的timing(即10ms timing)。接着,UE需要获取到小区的系统信息(System Information&…

5G NR 系统消息

1. 消息简介 系统消息分为MIB和一系列的SIB消息: MIB在BCH上传输,周期为80 ms,重复在80 ms内完成,它包括从小区获取SIB1所需的参数。 MIB承载必要的基础信息:SFN,hich-config及dl带宽信息(band-width)。 SI…

系统消息的发送和接收

Overview 在上篇博文“小区同步流程”中我们介绍了终端通过读取候选SSB获取了候选小区下行系统帧的10ms边界,完成了下行同步流程。同时我们也提到了此时终端只知道候选SSB的时频域位置信息,对于小区的其他信息一无所知。为了完成终端在候选小区驻留的目的…

如何实现系统公告或系统消息

系统都会有系统公告或系统消息,这是一个常见的业务。系统管理员在后台新建一条系统消息,选择部分用户(用户群组)或所有用户,用户收到消息后,点击阅读,该用户对当前消息的读取状态将变为已读。 …

网络加速_电狐H1Z1加速器轻松解决网络难题,低延迟吃鸡

近期,“全世界喷子最多的游戏”、“春节期间被外国玩家占领国人基地”等热门话题将H1Z1这款末日生存沙盒类网游再次推向了高潮,吸引了很多新手玩家进入游戏体验。 很多准备进入游戏的新手玩家都在问:玩H1Z1需要使用加速器么?H1Z1这…

steam加速_PC电脑steam有没有免费试用的加速器?首选电狐加速器

作为一个游戏数据资源十分丰富的商城,Steam社区既可以畅玩游戏,还可以讨论游戏、创造游戏,是一个全球性的游戏平台,目前steam的客户端已经支持28种语言,并且官方表示还会支持更多语言。不过一般在国内用steam社区都会发…

网易UU加速器

网易UU加速器支持以下搜索 从有道词典进入

加速器原理

SS示意图 网络传输当成“货车”。传输通道当成“道路”。各种数据当成“货物”。 货车通过来回运送你和目的地的货物,来产生你们之间的网络连接。 来回速度越快,你们的连接效率越高,你就感觉网络流畅。 但是呢,有些目的地&#xf…

25万美金奖励章鱼加速器2022冬季获胜团队!

全长 1427 字,预计阅读 6 分钟 作者:MiX 2022年12月21日,章鱼加速器2022年冬季 Web3 创业营圆满落幕,61个入营项目中有5个脱颖而出,获得「章鱼未来之星」称号,排名不分先后,他们分别是&#xf…

电子加速器原理与应用

辐射单位 射线能量 ϵ \epsilon ϵ,单位 e V eV eV ϵ h ν \epsilon h\nu ϵhν,普朗克常数 h h h,电磁波频率 ν \nu ν 电子伏特 e V eV eV:一个电子(电量为1.610C)经过1 V V V的电位差加速后获得的…

绝地大逃杀官方指定迅游加速

9月28日,国内领先的迅游加速器获得bluehole官方授权,成为《绝地求生》唯一指定加速器,而且是首次植入式的内置到“吃鸡”游戏中。这意味着,“吃鸡”玩家在游戏中可直接获得加速保障,无需在游戏前进行繁琐的加速准备&am…

用完加速器国内的网址打不开了?

原因可能是加速器吧国内的ip地址跳过了。解决办法就是重置一遍网络设置。。 1.打开控制面板,打开Internet设置; 2. 依次点:高级————重置。

吃鸡哪个服务器网络稳定,中国地区吃鸡哪个服务器不卡 | 手游网游页游攻略大全...

发布时间:2018-03-03 绝地求生:大逃杀中国xdd吃鸡的时候被封号,这是怎么回事,很多小伙伴可能都不太了解,下面牛游戏小编就为你们带来了绝地求生:大逃杀xdd吃鸡被封号的介绍,想了解的小伙伴就一起来看看吧,希望能对你们有帮助. 腾讯体育讯 4月 ... 标签: …

用纯python脚本玩转UU加速器

1. 前言 之前几期内容,我们出过纯py形式的Android自动化脚本。同学们一直让再出一下纯py形式的Windows脚本,今天我们以UU加速器为例,给大家出一个简单的学习demo。 2. UU加速器的自动化demo 今天的练习demo也非常简单,大致内容…