翻译《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.mzph.cn/web/24691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React hooks动态配置侧边栏

React hooks根据不同需求 还有不同的角色 动态的去配置侧边栏 需求: 点击某个按钮是一套侧边栏 ,不同角色(比如管理员之类的权限高一点)比普通用户多个侧边栏 然后点击另一个按钮是另一套侧边栏 此时,就需要动态的去…

【React】classnames 优化类名控制

1. 介绍 classnames是一个简单的JS库,可以非常方便的通过条件动态的控制class类名的显示 ClassNames是一个用于有条件处理classname字符串连接的库 简单来说就是动态地去操作类名,把符合条件的类名粘在一起 现在的问题:字符串的拼接方式不…

halcon算子之prepare_object_model_3d详解

为某一操作准备三维对象模型。 Description 操作符prepare_object_model_3d准备3D对象模型ObjectModel3D,用于下面目的中给出的操作。它计算操作所需的值并将其存储在ObjectModel3D中,从而加快了后续操作。没有必要调用prepare_object_model_3d。但是,如果要多次使用3D对象…

大疆智图_空三二维重建成果传输

一、软件环境 1.1 所需软件 1、 大疆智图:点击下载;   2、 ArcGIS Pro 3.1.5:点击下载,建议使用IDM或Aria2等多线程下载器;   3、 IDM下载器:点击下载,或自行搜索;   4、 Fas…

探索 Noisee AI 的奇妙世界与变现之旅

日赚800,利用淘宝/闲鱼进行AI音乐售卖实操 如何让AI生成自己喜欢的歌曲-AI音乐创作的正确方式 抖音主播/电商人员有福了,利用Suno创作产品宣传,让产品动起来-小米Su7 用sunoAI写粤语歌的方法,博主已经亲自实践可行 五音不全也…

[经验] 涠洲岛在广西吗 #职场发展#知识分享#媒体

涠洲岛在广西吗 广西涠洲岛,是中国南海上的一颗闪亮明珠,位于广西北部湾沿海,东经108.71度,北纬21.54度,距离北海市区30公里,是中国最大的海岛之一,风景秀丽,气候温和。岛上山青水秀…

PCE自动装机

服务端和客户端 pxe:c/s模式,允许客户端通过远程服务器(服务端)下载引导镜像,加载安装吻技安,实现自动化安装操作系统。 无人值守:安装选项不需要认为干预,可以自动化实现。 pxe优点: 1.规模…

最小相位系统

最小相位系统 1、传递函数 一个线性系统的响应。 比如一个RC低通滤波器: 交流分量在电容的充放电中被滤除掉,通过设置电容器的电容值,以及电阻值,能够控制这种滤除能力,这个参数为RC。 电容的电抗为 1 / j w C 1/j…

单片机+TN901非接触式红外测温设计

摘要 温度测量技术应用十分广泛,而且在现代设备故障检测领域中也是一项非常重要的技术。但在某些应用领域中,要求测量温度用的传感器不能与被测物体相接触,这就需要一种非接触的测温方式来满足上述测温需求。本论文正是应上述实际需求而设计的…

C语言实战:贪吃蛇(万字详解)

💡目录 效果图 界面设计思路 1. 基本布局 2. 视觉元素 游戏机制设计 基本规则 游戏代码 前期准备 游戏代码详解 数据结构设计 宏定义 数据结构定义 函数原型(详见后文) 主函数代码 核心代码 Review 效果图 界面设计思路 1. 基…

转型AI产品经理(4):“认知负荷”如何应用在Chatbot产品

认知负荷理论主要探讨在学习过程中,人脑处理信息的有限容量以及如何优化信息的呈现方式以促进学习。认知负荷定律认为,学习者的工作记忆容量是有限的,而不同类型的认知任务会对工作记忆产生不同程度的负荷,从而影响学习效果。以下…

Elasticsearch 认证模拟题 - 16

一、题目 创建一个搜索模版,要求 match_prase 查询,并且用指定的格式高亮,并排序 # 创建索引 PUT my_index {"settings": {"number_of_replicas": 0,"number_of_shards": 1},"mappings": {"p…

【SpringCloud学习笔记】Docker(上篇)

Docker 1. 前置准备 在学习Docker之前我们需要具备以下环境: Linux云服务器 / 虚拟机安装并配置Docker环境(命令行中输入docker -v能够显示对应版本证明安装成功) 2. 快速入门 要求: 我们先来尝试使用Docker创建MySQL服务&am…

ChatGLM2-6b的本地部署

** 大模型玩了一段时间了,一直没有记录,借假期记录下来 ** ChatGlm2介绍: chatglm2是清华大学发布的中英文双语对话模型,具备强大的问答和对话功能,拥有长达32K的上下文,可以输出比较长的文本。6b的训练参…

pycharm使用pip安装依赖包报错 -----Microsoft Visual C++ 14.0 is required解决方法

pip安装第三方库的时候会报错:需要Microsoft Visual C14.0或更高版本。 报错原因 因为pip所安装的包需要使用C编译后才能够正常安装,但是当前安装环境中缺少完整的C编译环境,因此安装失败。 这样解决方案就很明确了,安装完整的C编…

【学习笔记】解决 VMware Workstation 17 Player 和主机之间无法复制粘贴的问题

【学习笔记】解决 VMware Workstation 17 Player 和主机之间无法复制粘贴的问题 使用VMware Workstation 17 Player,再上面安装 Ubuntu ,安装完之后,需要和主机之间进行复制粘贴。 首先安装了VMware Tools。 在打开的页面下把 VMwareTools…

c++【入门】正多边形每个内角的度数

限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 根据多边形内角和定理,正多边形内角和等于:(n - 2)180(n大于等于3且n为整数)(如下图所示是三角形、四边形、五边形、六边形的形状&#xff09…

Stable Diffusion WebUI 各操作系统安装教程

最近几天在 2 台 Mac、2 台 PC、一台云无 GPU 的 Linux 安装了 Stable Diffusion WebUI,这里记录下如何安装,以及一些注意点和坑。 以下内容针对 Windows(N 卡)、MacOS(m 系列芯片)、Linux(Ubu…

【国产NI替代】SMU 源测量仪:源测量单元平台主要用于半导体、传感器、模组等 IVR 测试测量

• 集 5 台仪器 (数字万用表、电压源、电流源、电子负载和脉冲发生器) 功能于⼀体 • 典型输出源及测量精度 02%,支持直流/脉冲输出模式 • 脉冲输出模式,最⼩脉冲宽度 100 us ,上升时间 10 us • 具有 pA 级分辨率高精度源,且…

【Python机器学习】PCA——特征提取(1)

PCA的一个重要应用是特征提取。特征提取背后的思想是,可以找到一种数据表示,比给定的原始表示更适合于分析。特征提取很有用,它的一个很好的应用实例就是图像。图像由像素组成,通常存储于红绿蓝强度。图像中的对象通常由上千个像素…