翻译《The Old New Thing》- Why isn’t there a SendThreadMessage function?

Why isn't there a SendThreadMessage function? - The Old New Thing (microsoft.com)icon-default.png?t=N7T8https://devblogs.microsoft.com/oldnewthing/20081223-00/?p=19743

Raymond Chen 2008年12月23日


为什么没有 SendThreadMessage 函数?

简要

文章讨论了 Windows 中不存在 `SendThreadMessage` 函数的原因,指出通常应发送常规窗口消息而非线程消息,并建议使用窗口消息代替。

 

正文

        这里有一个有趣的客户问题:

Windows 有 `PostMessage` 和 `SendMessage`。它还有 `PostThreadMessage`,但没有 `SendThreadMessage`。为什么没有 `SendThreadMessage` 函数?我是否被迫用事件来模拟它?

        这个假想的 `SendThreadMessage` 函数会做什么?回想一下,`SendMessage` 将消息直接传递给窗口过程;消息泵从未看到它。这个假想的 `SendThreadMessage` 函数必须将消息直接传递给……什么?没有“线程窗口过程”可以传递给它。

        好的,也许你仍然打算在你的消息泵中处理线程消息,但你希望调用假想的 `SendThreadMessage` 函数的调用者等到你完成消息处理后再继续。但它怎么知道你完成了?它不能等待 `DispatchMessage` 返回,因为 `DispatchMessage` 不能分发线程消息。(它应该将它们分发到 _哪里_ ?)线程消息的处理完全由消息泵控制。窗口管理器给它一个线程消息,就窗口管理器而言,这就是故事的结尾。

        你可能会说,当有人下次调用 `GetMessage` 或 `PeekMessage` 时,线程消息的处理就完成了,但没有保证下次调用消息检索函数会来自消息泵。处理线程消息可能导致调用 `MessageBox`,作为一个模态函数,它将有自己的消息循环,这将调用 `GetMessage`,导致你的假想 `SendThreadMessage` 函数决定消息处理已经完成,而实际上它仍在进行。

        你应该怎么做呢?只创建一个窗口并发送给它一个消息。你想要使用 `PostThreadMessage` 函数的场景非常有限和特殊。在正常情况下,你只需要发送一个常规的窗口消息。

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

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

相关文章

全链路性能测试:Nginx 负载均衡的性能分析和调优

为什么性能测试很多同学觉得是一个比较难以自学上岸的测试领域,是因为真正做全链路的性能测试是比较难的。所谓的全链路就是在项目的整个链路上任何一环节都有可能存在性能测试瓶颈,我们都需要能够通过分析性能的监控指标找到对应的问题。 我们今天要讲的Nginx负载均衡就是…

Shell脚本学习_字符串变量

目录 1.Shell字符串变量:格式介绍 2.Shell字符串变量:拼接 3.Shell字符串变量:字符串截取 4.Shell索引数组变量:定义-获取-拼接-删除 1.Shell字符串变量:格式介绍 1、目标: 能够使用字符串的三种方式 …

【NI国产替代】500 MSPS 采样率,14 bit 分辨率数据采集盒子

• 双高速高精度数据采集通道 • 支持内外精准触发采样模式 • 丰富的总线控制接口 • 抗干扰能力强 高速采集盒子是一款双通道,具有 500 MSPS 采样率,14 bit 分辨率的高速高精度数据采集设备,其模拟输入带宽为 200 MHz,…

深入了解反射

newInstance 可访问性限制: newInstance()方法只能调用无参的公共构造函数。如果类没有无参公共构造函数,那么newInstance()方法将无法使用。 异常处理: newInstance()方法在创建对象时会抛出受检异常InstantiationException和IllegalAcces…

各品牌电视安装第三方软件失败的解决方法

在安装电视第三方软件时,您可能会遇到安装失败、解析错误或无法识别文件类型等问题。以下是一些常见问题的解决方案,小武给您整理了详细的步骤来帮助解决这些问题。 手机投屏或安装方法参考如下文章: 移动端投屏到大屏幕的操作详解 通过U盘…

SpringBoot图书管理系统【附:资料➕文档】

前言:我是源码分享交流Coding,专注JavaVue领域,专业提供程序设计开发、源码分享、 技术指导讲解、各类项目免费分享,定制和毕业设计服务! 免费获取方式--->>文章末尾处! 项目介绍048: 图…

2024年6月8日 每周新增游戏

中医百科中药: 中医百科中药是一款非常强大的中药知识科普软件,该应用提供500多味中草药的文献资料,强大的搜索功能可根据功效、特点和关键词来快速查找中药,而且每味中药的图片、功效、主治、炮制方法等百科知识,可以很好的帮助你…

计算机专业本科论文起稿咋写

举例基于SpringBoot的Java基础的旅游管理系统 摘要 随着旅游业的快速发展,传统的旅游管理方式已经难以满足现代企业的需求。为了提高旅游企业的管理水平和服务质量,本文设计并实现了一个基于SpringBoot框架的旅游管理系统。本文首先介绍了旅游管理系统的…

E: 仓库 “http://download...graphics:/darktable/xUbuntu_22.04 InRelease” 没有数字签名

问题 Ubuntu22.04装了darktable软件没装好,已经卸载了但是没卸载干净,终端使用 sudo apt update 出现的问题: 解决: sudo nano /etc/apt/sources.list.d/*darktable*.list找到了该软件的相关仓库条目:直接给他注释掉就行了。

springcloud第4季 springcloud-gateway网关filter案例场景

一 filter作用 1.1 filter搭建流程 1.1.1 网关配置 1.1.2 服务提供者 1.1.3 测试验证 1.启动consul 2.启动zipkin 3.启动应用微服务 4.进行访问: http://localhost:6666/pay/wg/filter 1.2 其他常见API RemoveRequestHeadersec-fetch-site # 删除请求…

重构大学数学基础_week04_从点积理解傅里叶变换

这周我们来看一下傅里叶变换。傅里叶变换是一种在数学和许多科学领域中广泛应用的分析方法,它允许我们将信号或函数从其原始域(通常是时间域或空间域)转换到频域表示。在频域中,信号被表示为其组成频率的幅度和相位,这…

电脑下载速度很慢怎么解决 电脑下载加速工具测评推荐

电脑下载速度慢,不仅耗时冗长,还会影响工作和学习效率。漫长的等待让人心情焦虑,每一秒都是对耐心的极大考验。有关电脑下载速度很慢怎么解决,电脑下载加速工具评测推荐的问题,本文将进行详细介绍。 一、电脑下载速度…

一个简单的消息队列

目录 原理 实现代码 示例 原理 消息队列是一个先进先出栈,每次都处理第一项,处理完了过后会删除这个消息,这是一个简单的消息队列图: 实现代码 首先消息队列需要一个队列,我们用Python里的列表: self.…

信息学奥赛初赛天天练-23-CSP-J2023基础题-指针、链表、哈夫曼树与哈夫曼编码的实战应用与技巧大揭秘

PDF文档公众号回复关键字:20240608 单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项) 4 假设有一个链表的节点定义如下: struct Node {int data; Node* next; };现在有一个指向链表头部…

今年618,京东和爱奇艺为大屏品质“把关”

今年618电视大战,还是打响了。 根据京东618数据显示,618开门红阶段热卖TOP10电视均为75英寸以上的大屏,拥有超高画质的MiniLED电视成交量同比增长5倍。可以看到,大屏电视逐步成为消费主流,尤其是拥有出色视听体验的高…

【MYSQL系列】mysql中text,longtext,mediumtext区别

【MYSQL系列】mysql中text,longtext,mediumtext区别 在MySQL数据库中,TEXT、LONGTEXT和MEDIUMTEXT都是用于存储大量文本数据的字段类型。它们之间的主要区别在于可存储的数据大小和性能方面的差异。本文将探讨这些字段类型的特点、使用场景和一些最佳实践。 TEXT类…

How To: Localize Bar and Ribbon Skin Items

您可以使用Localizer对象自定义皮肤菜单,而不是迭代每个条形皮肤子菜单项和功能区皮肤库项容器来手动修改这些项。此方法允许您同时自定义所有现有栏子菜单和功能区库中的外观项目。 创建BarLocalizer类的派生类并重写XtraLocalizer.GetLocalizedString方法。 pub…

《python程序语言设计》2018版第5章第46题均值和标准方差-上部(我又一次被作者的出题击倒)

第N次被作者打倒了&#xff0c;第5章46题解题上集的记录 计算均值的代码段 step_num 0num_c 0 pow_c 0 while step_num < 10:a eval(input("Enter number is: "))num_c apow_c pow(a, 2)step_num 1 t2 num_c / 10这个结果和书里的答案差一点。书里写的是…

易飞销货单出货时审核库存检查

公司接到一客户因品种多而数量少&#xff0c;单一出货计划行比较多&#xff0c;而只上了生产ERP易飞&#xff0c;审核时经常会出现倒催货&#xff0c;提前做销售单&#xff0c;行数有时超30行以上&#xff0c;审核跳窗报错时也不方便查找&#xff0c;特写一外挂程序&#xff0c…

植物大战僵尸杂交版最新2.0.88手机+电脑+苹果+修改器

在这个充满奇妙的平行宇宙中&#xff0c;植物和僵尸竟然能够和谐共存&#xff01;是的&#xff0c;你没听错&#xff01;一次意外的实验&#xff0c;让这两个看似对立的生物种类发生了基因杂交&#xff0c;创造出了全新的生物种类——它们既能够进行光合作用&#xff0c;也具备…