有没有人遇到过在线程中向主窗口发送消息,SendMessage成功,而PostMessage失败的?

时间:2022-10-16 20:57:23
我的主窗口是一个对话框,这个对话框创建了一个工程线程,将把自己的m_hWnd传给了线程,线程通过这个m_hWnd向主窗口发送消息,用PostMessage的时候,有些时候行,不些时候不行,比如上午下,下午就不行了,程序都没动过。改为SendMessage又行了!

有些时候我真怀疑的编辑器的问题,因为当PostMessage不行的时候,我改为SendMessage,结果行了,然后再改回PostMessage,结果也行了!

想了好久也不知道如何解释这个问题。

7 个解决方案

#1


注:我发的消息,WPARAM,LPARAM都是值,而非指针,所以也不存在局部变量析构的问题。

#2


PostMessage 是只管发, 不管返回消息的. 可能连续不停的发, 消息队列发满了, 就不接受新的消息了, 就出问题了. 要不, 改用 SendMessage, 它会等收到返回消息才继续向前走的.

#3


postmessage发出去的消息你要等待空闲时间片轮循环到你接受才可以.绝对不会send成功post失败的.

#4


不是这样的,一但PostMessage在某一次发送不成功后,以后绝对再也不会成功了,重启程序也不行。非得在VC中把它改为SendMessage,编译再运行,问题解决。
再次改为PostMessage,编译再运行,也解决问题。但不知道以后出问题是什么时候了!

#5


发送成功或失败的判断标准是怎么样的?
需要更详细的信息

#6


PostMessage返回值一定是成功的。
我说的不成功,是说主窗口没有收到消息。

#7


我也遇到相同的问题了,不知道是怎么回事。
我的是这样的,如果两个线程向主窗口PostMessage的话,总会少一个没收到。
而用SendMessage会完全正常,希望高手指点

#1


注:我发的消息,WPARAM,LPARAM都是值,而非指针,所以也不存在局部变量析构的问题。

#2


PostMessage 是只管发, 不管返回消息的. 可能连续不停的发, 消息队列发满了, 就不接受新的消息了, 就出问题了. 要不, 改用 SendMessage, 它会等收到返回消息才继续向前走的.

#3


postmessage发出去的消息你要等待空闲时间片轮循环到你接受才可以.绝对不会send成功post失败的.

#4


不是这样的,一但PostMessage在某一次发送不成功后,以后绝对再也不会成功了,重启程序也不行。非得在VC中把它改为SendMessage,编译再运行,问题解决。
再次改为PostMessage,编译再运行,也解决问题。但不知道以后出问题是什么时候了!

#5


发送成功或失败的判断标准是怎么样的?
需要更详细的信息

#6


PostMessage返回值一定是成功的。
我说的不成功,是说主窗口没有收到消息。

#7


我也遇到相同的问题了,不知道是怎么回事。
我的是这样的,如果两个线程向主窗口PostMessage的话,总会少一个没收到。
而用SendMessage会完全正常,希望高手指点