当前位置: 首页 > news >正文

翻译《The Old New Thing》- Why do messages posted by PostThreadMessage disappear?

Why do messages posted by PostThreadMessage disappear? - The Old New Thing (microsoft.com)icon-default.png?t=N7T8https://devblogs.microsoft.com/oldnewthing/20090930-00/?p=16553

Raymond Chen 2008年09月30日


为什么 PostThreadMessage 发布的信息会消失?

        在显示用户界面的线程中,唯一一种您能够实际发送的消息是`WM_NULL`,而且这通常只是因为您出于某种原因需要唤醒消息循环。我经常遇到的一个常见问题是,人们使用`PostThreadMessage`向显示用户界面的线程发送消息,然后困惑为什么他们的消息从未被接收。

        实际上,消息确实被发送了。它被接收了,但随后就被丢弃了。

        这篇文章实际上是之前一篇标题为“模态循环会吞噬线程消息”的文章的重复,但我用一个更有助于搜索引擎优化的标题重新发表了它。既然我已经在这里了,我不妨对现有文章进行一些补充。

        在用户界面线程上,存在模态循环的明显地方是那些明确是模态的函数,比如`DialogBox`、`MessageBox`、`TrackPopupMenuEx(TPM_RETURNCMD)`或`DoDragDrop`。但还有一些不那么明显的模态循环,比如当您点击标题栏并按住鼠标按钮时运行的模态循环,或者当COM在等待一个跨线程调用完成时运行的模态循环。

        由于您无法控制这些模态循环,当它们调用`DispatchMessage`时,您的线程消息就会被简单地丢弃。

        如果您需要与也显示用户界面的线程可靠地通信,那么您应该创建一个隐藏的窗口,并向该窗口发送或发布消息。

http://www.lryc.cn/news/368465.html

相关文章:

  • 【深度学习】—— 神经网络介绍
  • python-数字黑洞
  • SpringCloud 负载均衡 spring-cloud-starter-loadbalancer
  • 牛客周赛-46
  • 多模态vlm综述:An Introduction to Vision-Language Modeling 论文解读
  • 28.找零
  • [方法] 《鸣潮》/《原神》呼出与锁定光标的功能细节
  • 计算机网络-NAT配置与ACL
  • 哈尔滨三级等保测评需要测哪些设备?
  • 大学体育(二)(华中科技大学) 中国大学MOOC答案2024版100分完整版
  • Web前端策划:从理念到实现的全方位解析
  • 经济与安全兼顾:茶饮店购买可燃气体报警器的价格考量
  • 鞠小云张霖浩闪耀北京广播电视台春晚发布会,豪门姐弟感爆棚
  • java Function 用法
  • LabVIEW与Python的比较及联合开发
  • RAG技术在教育领域的应用
  • 玉米粒计数检测数据集VOC+YOLO格式107张1类别
  • 成功解决IndexError: index 0 is out of bounds for axis 1 with size 0.
  • stm32之USMART调试组件的使用
  • 【Python】成功解决TypeError: ‘int’ object is not iterable
  • 【日常记录】【JS】中文转拼音的库 pinyin-pro
  • CopyOnWriteArrayList详解
  • CUDA 编程(1):使用Grid 和 Block分配线程
  • ArcGIS for js 4.x FeatureLayer 加载、点选、高亮
  • 倩女幽魂手游攻略:云手机自动搬砖辅助教程!
  • Typesense-开源的轻量级搜索引擎
  • 探索 LLM 预训练的挑战,GPU 集群架构实战
  • 高考分数查询结果自动推送至微信(卷II)
  • python类动态属性,以属性方式访问字典
  • 招聘在家抄书员?小心是骗局!!!