Win32消息机制原理及消息运转

一.消息机制原理

1.消息类型:

WIndows定义的一系列WM_XXX开头的,用来表示键盘按键,鼠标点击,窗口变化,用户自定义等各种消息;

2.消息队列:

Windows为每一个正在运行的程序维护一个消息队列应用程序的消息循环会从消息队列中获取消息,并对齐进行处理;
消息机制允许应用程序响应操作系统和用户操作,使得应用程序能够于操作系统进行有效交互,响应用户的操作和系统的通知,消息机制实际上是以回调函数的方式实现,不是类型安全的;

3.消息发送:

sendmessage发送消息,这个函数主要是向一个或多个窗口发送一条消息,一直等到消息被处理之后才会返回。不过需要注意的是,如果接收消息的窗口是同一个应用程序的一部分,那么这个窗口的窗口函数就被作为一个子程序马上被调用;如果接收消息的窗口是被另外的线程所创建的,那么窗口系统就切换到相应的线程并且调用相应的窗口函数,这条消息不会被放进目标应用程序队列中。函数的返回值是由接收消息的窗口的窗口函数返回,返回的值取决于被发送的消息;Postmassage函数把一条消息放置到创建hWnd窗口的线程的消息队列中,该函数不等消息被处理就马上将控制返回。需要注意的是,如果hWnd参数为 HWND_BROADCAST,那么,消息将被寄送给系统中的所有的重叠窗口和弹出窗口,但是子窗口不会收到该消息;如果hWnd参数为NULL,则该函数类似于将dwThreadID参数设置成当前线程的标志来调用PostThreadMEssage函数;

4.消息处理:

在WndProc函数中,用户程序通过switch-case语句来判断不同类型的消息,并对其进行相应的响应,比如:WM_CREATE消息在创建窗口是被发送,他只被发送一次,通常于窗口的构造函数相关联;

5.常见消息:

创建窗口消息WM_CREATE,销毁窗口消息WM_DESTROY,激活消息WM_ACTIVATE,系统命令消息WM_SYSCOMMAND,命令消息WM_COMMAND;

6.消息接收:

GetMessage用来获取与hWnd参数所指定的窗口相关的且wMsgFilterMin和wMsgFilterMax参数所给出的消息值范围内的消息;PeekMessage用于查看应用程序的消息队列,如果其中有消息就将其放入lpMsg所指的结构中,不过,与GetMessage不同的是,PeekMessage函数不会等到有消息放入队列时才返回;WaitMessage当一个应用程序无事可做时,该函数就将控制权交给另外的应用程序,同时将该应用程序挂起,直到一个新的消息被放入应用程序的队列之中才返回;

二.消息运转流程

消息运转流程用图来解释最好,看下图:
windows消息流转

消息传输

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/750127.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【光伏开发】工商业光伏的优势

随着全球对可再生能源的日益重视和环保意识的增强,工商业光伏作为一种清洁、高效的能源利用方式,正在得到广泛的推广和应用。工商业光伏系统通过安装在工厂、仓库、办公楼等工商业场所的太阳能电池板,将太阳能转化为电能,以满足工…

【Java Web】Element-plus组件库

目录 一、Element-plus组件库概述 二、Element-plus组件库基本用法 一、Element-plus组件库概述 Element-plus组件库是由饿了么团队基于Vue3框架编写的前端UI设计组件库。通俗点讲就是将用户页面设计所需的按钮、表格、导航栏等前端代码编写生成的组件元素都封装好了、用户在进…

java中的Collections工具类

Collections类是java中提供的一个工具类,它和接口Collection乍一看非常相像,但是二者的区别是非常大的,最明显的就是它们一个是类,而另一个是接口了。Collections工具类的作用是对Set 、Map、 List这些容器提供辅助方法来对容器中…

AI时代的风口,中小企业也不能错过

文|白 鸽 编|周效敬 这些场景,对你来说或许并不陌生: 在医院的大屏上,一个医生模样的数字人在做医疗知识科普;在抖音的直播间里,一个真人模样的数字人在线上直播带货,24小时无休无…

SQLite、MySQL、PostgreSQL 3个关系数据库之间优缺点对比

引言 关系数据模型以行和列的表格形式组织数据,在数据库管理工具中占主导地位。今天还有其他数据模型,包括NoSQL和NewSQL,但是关系数据库管理系统(RDBMS)仍然占主导地位用于存储和管理全球数据。 本文比较了三种实现最…

【金融研究】6月,对冲基金狂卖美国科技股 短期乐观,长期悲观?“油价最大空头”花旗:明年跌到60

科技股新高的背后,是对冲基金与散户投资者的分歧,对冲基金正在向散户投资者出售创纪录数量的科技/半导体/美股“七姐妹”股票。 对冲基金狂卖美国科技股 在五大明星科技股(苹果、亚马逊、微软、英伟达、谷歌)轮番创下历史新高的…

CSS基础学习记录(6)

目录 1、从最基本的页面开始 2、添加图像/浮层部分 3、位置调整 4、添加动效 4.1、添加浮层动效 4.2、添加背景动画 根据前面css的学习,本篇来实践下前面学习的知识,主要实现如下这样的效果。 下面我们一步步实现上面的效果。 1、从最基本的页面开…

uniapp开发H5、手机APP、微信小程序 可拖动菜单按钮

ml-fab 插件地址:https://ext.dcloud.net.cn/plugin?id18909 1、可拖拽悬浮按钮 ml-fab,支持自定义插槽,点击可展开一个图标按钮菜单,可随意拖拽。 2、支持自定义插槽,可实现自定义配置。 3、操作简单易上手。 ml-f…

锐捷AP从其它项目拆下,怎么也加入不了到现在这个网络里来

环境: AP 产品型号:RG-RAP2260G 问题描述: 锐捷AP从其它项目拆下,怎么也加入不了到现在这个网络里来,现网是WIFI5的,想把2260G用来升级,恢复出厂设置后,插上网线,现网找不到这个AP 解决方案: 1.通电重置AP后,连接AP WiFi进入管理页面,要求先快速配置 2.开始配置…

【计算机网络篇】数据链路层(12)交换机式以太网___以太网交换机

文章目录 🍔交换式以太网🛸以太网交换机 🍔交换式以太网 仅使用交换机(不使用集线器)的以太网就是交换式以太网 🛸以太网交换机 以太网交换机本质上就是一个多接口的网桥: 交换机的每个接口…

1.回溯算法.基础

1.回溯算法 基础知识题目1.组合2.组合-优化3.组合总和|||4.电话号码和字母组合5.组合总和6.组合总和II7.分割回文串8.复原IP地址 基础知识 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯 因为回溯的本质是穷…

品牌窜货治理:维护市场秩序与品牌健康的关键

品牌在各个渠道通常都会设定相应的销售规则,其中常见的便是区域保护制度,比如 A 地区的货物只能在 A 地区销售,各区域的产品价格和销售策略均有所不同,因此 A 地区的货物不能流向 B 地区,否则就被称为窜货。 窜货现象不…

以数治税时代来临,企业如何应对?

全电发票是数字经济时代发票的新形态,顺应了数字经济潮流。现如今,国家正全力推动行业数字化进程,预计,2025年将基本实现发票全领域、全环节、全要素电子化,实现税务执法、服务、监管与大数据智能化应用深度融合、高效…

车载信息安全:技术要求,实验方法

目录 1. 技术要求 1.1 硬件安全要求 1.2 通信协议与接口安全要求 1.2.1 对外通信安全 1.2.2 内部通信安全 1.2.3 通信接口安全 1.3 操作系统安全要求 1.3.1 操作系统安全配置 1.3.2 安全调用控制能力 1.3.3 操作系统安全启动 1.3.4 操作系统更新 1.3.5 操作系统隔离…

基于大语言模型的多意图增强搜索

随着人工智能技术的蓬勃发展,大语言模型(LLM)如Claude等在多个领域展现出了卓越的能力。如何利用这些模型的语义分析能力,优化传统业务系统中的搜索性能是个很好的研究方向。 在传统业务系统中,数据匹配和检索常常面临…

综合管廊挂轨巡检机器人:安全高效管理的新力量

综合管廊、电力管廊等作为承载着各类电缆和管线的重要通道,管廊的安全和可靠性对城市的运行至关重要。传统人工巡检效率低、劳动强度大,且可能存在巡检不及时、不准确等问题。难以满足日益复杂和庞大的管廊系统的监控需求。为了解决这些问题,…

Vue3学习笔记<->创建第一个vue项目

新建一个项目目录 找一个盘新建一个目录,我这里在D盘创建一个vuedemo目录作为项目存放的目录。使用idea打开目录。   单击ieda底部的按钮“Terminal”,打开命令行窗口,如果命令行窗口当前目录不是“vuedemo”,就切换到“vuedem…

纳米硅(SiNP)可用于制造锂离子电池 纳米硅粉为其代表产品

纳米硅(SiNP)可用于制造锂离子电池 纳米硅粉为其代表产品 纳米硅(SiNP)指尺寸在纳米尺度范围内的硅颗粒。纳米硅具有光吸收谱宽、表面活性高、比表面积大、机械强度高、电学性能好等优势,在石油化工、建筑工程、电子电…

Data Grouping

分组功能将具有相同列值的行组合到相同的数据组中。Grid View 和 Banded Grid Views的支持。 GridControl-Grid View 应用分组 数据分组最初在数据网格中启用(默认设置)。要按列对数据进行分组,请将列标题拖动到分组面板中。另一个选项是右…

求出某空间曲面下的体积

求出某空间曲面下的体积 flyfish 用小长方体的体积和来逼近该体积 import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation# 定义函数 f(x, y) def f(x, y):return np.sin(np.pi * x) * np.sin(np.pi * y)# 创建网格 x np.linspac…