gpt4 book ai didi

winapi - 如果接收线程开始泵送消息,SendMessage 可以提前返回吗?

转载 作者:行者123 更新时间:2023-12-02 06:30:13 27 4
gpt4 key购买 nike

Windows 如何精确地决定 SendMessage 应返回 - 即,它如何决定接收线程已完成对发送消息的处理?

详细场景:我有线程 A 使用 SendMessage 将线程发送到线程 B。显然,直到线程 B 处理完消息后,SendMessage 才会返回。线程B弹出一个对话框并开始泵送消息。在我的场景中,队列中有一条 WM_KILLFOCUS 消息,该消息由线程 B 泵送。结果是线程 B 上的 WM_COMMAND 消息。线程 B 将此 WM_COMMAND 消息传递给默认窗口过程。当它执行此操作时,SendMessage 返回到线程 A,即使原始消息尚未完成处理!到底是怎么回事?看起来默认的窗口过程不知何故让 Windows 误以为原始发送的消息已完成。

那么是否存在已知的场景,其中泵送消息并调用默认窗口过程可以欺骗 SendMessage 返回?

谢谢!菲尔

最佳答案

只要消息的处理已经开始,处理线程间消息的 WindowProc 就可以调用 ReplyMessage允许调用线程在处理继续时继续。

关于winapi - 如果接收线程开始泵送消息,SendMessage 可以提前返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1882351/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com