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

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

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

想了好久也不知道如何解释这个问题。
...全文
479 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rehen 2007-04-20
  • 打赏
  • 举报
回复
我也遇到相同的问题了,不知道是怎么回事。
我的是这样的,如果两个线程向主窗口PostMessage的话,总会少一个没收到。
而用SendMessage会完全正常,希望高手指点
youngwolf 2006-11-30
  • 打赏
  • 举报
回复
PostMessage返回值一定是成功的。
我说的不成功,是说主窗口没有收到消息。
ybt631 2006-11-30
  • 打赏
  • 举报
回复
发送成功或失败的判断标准是怎么样的?
需要更详细的信息
youngwolf 2006-11-30
  • 打赏
  • 举报
回复
不是这样的,一但PostMessage在某一次发送不成功后,以后绝对再也不会成功了,重启程序也不行。非得在VC中把它改为SendMessage,编译再运行,问题解决。
再次改为PostMessage,编译再运行,也解决问题。但不知道以后出问题是什么时候了!
toxyboy 2006-11-30
  • 打赏
  • 举报
回复
postmessage发出去的消息你要等待空闲时间片轮循环到你接受才可以.绝对不会send成功post失败的.
王国凡 2006-11-30
  • 打赏
  • 举报
回复
PostMessage 是只管发, 不管返回消息的. 可能连续不停的发, 消息队列发满了, 就不接受新的消息了, 就出问题了. 要不, 改用 SendMessage, 它会等收到返回消息才继续向前走的.
youngwolf 2006-11-30
  • 打赏
  • 举报
回复
注:我发的消息,WPARAM,LPARAM都是值,而非指针,所以也不存在局部变量析构的问题。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧