为什么线程接收不到PostThreadMessage发送的消息?

mopyman 2006-03-24 12:58:48
为什么线程接收不到PostThreadMessage发送的消息?
在线程的开始用PeekMessage(&msg,NULL,0,0,PM_REMOVE)语句建立了线程的消息队列,然后在用PostThreadMessage给线程发送消息,调试发现线程根本没收到消息。建立线程的消息队列时有什么要求吗?
...全文
1306 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
做鸡真好吃 2006-04-28
  • 打赏
  • 举报
回复
MM~
mopyman 2006-03-24
  • 打赏
  • 举报
回复
谢谢各位,已经找到原因了:
我在建立线程以后立即发送消息,线程的消息队列还未建立完毕,所以接收不到消息,延迟一段时间再发送就没问题了。一定要注意PostThreadMessage的返回值,有时候消息不一定能交付过去。
flyelf 2006-03-24
  • 打赏
  • 举报
回复
PeekMessage(&msg,NULL,0,0,PM_REMOVE);
while(GetMessage(...)
{
switch(msg.message)
{
case ...
}
}
一般情况下都能接收到其它线程给本线程发送的消息
daotong 2006-03-24
  • 打赏
  • 举报
回复
PostThreadMessage只管发送消息,发送之后就返回了,是不是发送到了目的地它不知道,应该在你要接受消息的地方前边设置一个断点,单步调试一下看看是哪里出了错误,在可能出错的地方前边都用AfxMessageBox()标记一下也可以。
一个傻冒 2006-03-24
  • 打赏
  • 举报
回复
PostThreadMessage只向线程的消息队列中登记一条消息.就返回了.并不保证消息会被处理.

15,471

社区成员

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

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