SendMessage似乎未等消息处理完就返回了

wencan2010 2011-08-30 09:58:05
我写的是基于MFC的ActiveX控件,多线程DLL运行库
在WindowProc函数中捕获自定义消息
在处理自定义消息时,发出WM_MOUSEMOVE消息

通过日志文件,得出处理过程是这样的:
自定义消息处理开始
自定义消息处理完成
WindowProc函数接收到MW_MOUSEMOVE消息
WM_MOUSEMOVE消息处理开始
WM_MOUSEMOVE消息处理完成

可以看出,自定义消息处理完成了,才开始WM_MOUSEMOVE消息的处理
按原理说,SendMessage应该等消息处理完成了才开始下面的过程

...全文
283 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
许文君 2011-09-11
  • 打赏
  • 举报
回复
sendmessage是依据优先级插入队列,然后返回,因此一些低优先级的可能未及执行
足球中国 2011-09-08
  • 打赏
  • 举报
回复
没看出来有问题。不是正确的嘛?多线程状态下运用。加锁。
老猿的春天 2011-09-08
  • 打赏
  • 举报
回复
sendmessage比postmessage优先级高吧,不需等待所有消息执行完再执行,它不把消息加载到消息队列,而是插队的形式
buyong 2011-08-30
  • 打赏
  • 举报
回复
把日志部分代码贴出来,我怀疑日志记得不对
[Quote=引用楼主 wencan2010 的回复:]
我写的是基于MFC的ActiveX控件,多线程DLL运行库
在WindowProc函数中捕获自定义消息
在处理自定义消息时,发出WM_MOUSEMOVE消息

通过日志文件,得出处理过程是这样的:
自定义消息处理开始
自定义消息处理完成
WindowProc函数接收到MW_MOUSEMOVE消息
WM_MOUSEMOVE消息处理开始
WM_MOUSEMOVE消息处理完成

可……
[/Quote]
ouyh12345 2011-08-30
  • 打赏
  • 举报
回复
弄个事件,并wait
alexander_david 2011-08-30
  • 打赏
  • 举报
回复
要不再折腾一下,在WM_MOUSEMOVE处理后再发一个新的自定义消息,然后再接着处理这个新的自定义消息?
wencan2010 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ouyh12345 的回复:]

消息响应函数里,应该只post消息,而不send消息
要不,不就死锁了吗
[/Quote]

但我必须在WM_MOUSEMOVE消息处理之后才能做其它的操作
ouyh12345 2011-08-30
  • 打赏
  • 举报
回复
消息响应函数里,应该只post消息,而不send消息
要不,不就死锁了吗

15,471

社区成员

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

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