如何检查消息队列中是否存在某条消息

bright2k 2006-09-16 04:23:35
要实现功能如下:

工作线程向界面线程发送消息(PostMessage),如果界面线程的消息队列里已经存在该消息,则不再
发送该消息

问题是,如何让工作线程能够判断界面线程的消息队列中是否存在指定的消息?
...全文
798 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
eloquent 2006-09-22
  • 打赏
  • 举报
回复
使用消息钩子
ERR0RC0DE 2006-09-22
  • 打赏
  • 举报
回复
记得之前有个程序不停的Postmsg给主线程,后来发现消息会丢失,所以改用SendMsg了,呵
eloquent 2006-09-22
  • 打赏
  • 举报
回复
SetWindowsHookEx
lihao1111111111 2006-09-19
  • 打赏
  • 举报
回复
对,直接查看消息泵!
shenming123 2006-09-19
  • 打赏
  • 举报
回复
界面线程来处理不就得了,

PeekMessage

PM_REMOVE 所有队列中的此消息
「已注销」 2006-09-18
  • 打赏
  • 举报
回复
billy145533(努力升星)说得有道理,关注
billy145533 2006-09-17
  • 打赏
  • 举报
回复
消息是给界面线程,工作线程自然不得而知
只有界面线程通过从消息泵里面拿到这个消息PeekMessage,getmessage,才能通知工作线程是否有这样的消息,但是有意义吗??
除非是界面线程将获取的消息先保存成自己定义的消息队列里面(钩子),再直接把队列的消息传给窗口过程,这样做又容易引起消息混乱.
从楼主的要求来看,直接查看消息泵的消息是个理想的做法.
关注别人的高见
思危 2006-09-17
  • 打赏
  • 举报
回复
PeekMessage
长尾巴的悟空 2006-09-17
  • 打赏
  • 举报
回复
up
DentistryDoctor 2006-09-17
  • 打赏
  • 举报
回复
MSG msg;
if(PeekMessage(&msg, NULL, messageId, messageId, PM_NOMOVE))
{
}
bright2k 2006-09-17
  • 打赏
  • 举报
回复
就是想实现像SetEvent一样的功能
即要发送的消息如果已经在队列里,则直接忽略掉

15,979

社区成员

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

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