在WndProc里面的某个消息处理中发送一个消息

zyq_123 2012-02-05 10:01:51
在WndProc里面的某个消息处理中发送一个消息,新的消息进入队列,那发送消息之后的语句是否继续执行?

WM_消息:
SendMessage(...);
语句1;
语句2;
……
return 0;


SendMessage之后的语句还执行吗?是先执行完SendMessage发送的消息回来执行,还是怎样?
...全文
181 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员小迷 2012-02-06
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zyq_123 的回复:]

引用 13 楼 cxsjabcabc 的回复:
SendMessage只是一条语句,执行完,后面的会继续执行的。


SendMessage当然是一条语句,问题是SendMessage的消息处理。
[/Quote]

哦,问的是这个啊。
刚看了MSDN,是这样的:
Sends the specified message to a window or windows. The SendMessage function calls the window procedure for the specified window and does not return until the window procedure has processed the message.

是等到消息处理完才返回。
zyq_123 2012-02-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 cxsjabcabc 的回复:]
SendMessage只是一条语句,执行完,后面的会继续执行的。
[/Quote]

SendMessage当然是一条语句,问题是SendMessage的消息处理。
程序员小迷 2012-02-06
  • 打赏
  • 举报
回复
SendMessage只是一条语句,执行完,后面的会继续执行的。
面包大师 2012-02-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zyq_123 的回复:]
引用 8 楼 czh3642210 的回复:
引用 7 楼 zyq_123 的回复:
引用 5 楼 visualeleven 的回复:
以SendMessage来发送消息,是非队列消息,直接到窗口过程中,并不进入消息队列中,处理完成以后SendMessage才返回。


那进队列的消息呢?是执行完回来,还是怎样?

进队列的消息不是同步的,所以不需要执行完了再回来


那是不……
[/Quote]
是的。。。。
Lactoferrin 2012-02-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zyq_123 的回复:]

引用 8 楼 czh3642210 的回复:
引用 7 楼 zyq_123 的回复:
引用 5 楼 visualeleven 的回复:
以SendMessage来发送消息,是非队列消息,直接到窗口过程中,并不进入消息队列中,处理完成以后SendMessage才返回。


那进队列的消息呢?是执行完回来,还是怎样?

进队列的消息不是同步的,所以不需要执行完了再回来


那是……
[/Quote]
yes
zyq_123 2012-02-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 czh3642210 的回复:]
引用 7 楼 zyq_123 的回复:
引用 5 楼 visualeleven 的回复:
以SendMessage来发送消息,是非队列消息,直接到窗口过程中,并不进入消息队列中,处理完成以后SendMessage才返回。


那进队列的消息呢?是执行完回来,还是怎样?

进队列的消息不是同步的,所以不需要执行完了再回来
[/Quote]

那是不是进队列消息发完就执行下面的语句不用等待?
zyq_123 2012-02-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 rrrfff 的回复:]
引用 5 楼 visualeleven 的回复:

以SendMessage来发送消息,是非队列消息,直接到窗口过程中,并不进入消息队列中,处理完成以后SendMessage才返回。

正解

如果处理过程中程序崩溃就没法返回了
[/Quote]

是的,要是处理过程中停电,也没法返回的!:)那进队列消息,是执行完回来,还是怎样?
面包大师 2012-02-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zyq_123 的回复:]
引用 5 楼 visualeleven 的回复:
以SendMessage来发送消息,是非队列消息,直接到窗口过程中,并不进入消息队列中,处理完成以后SendMessage才返回。


那进队列的消息呢?是执行完回来,还是怎样?
[/Quote]
进队列的消息不是同步的,所以不需要执行完了再回来
zyq_123 2012-02-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 visualeleven 的回复:]
以SendMessage来发送消息,是非队列消息,直接到窗口过程中,并不进入消息队列中,处理完成以后SendMessage才返回。
[/Quote]

那进队列的消息呢?是执行完回来,还是怎样?
RLib 2012-02-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 visualeleven 的回复:]

以SendMessage来发送消息,是非队列消息,直接到窗口过程中,并不进入消息队列中,处理完成以后SendMessage才返回。
[/Quote]
正解

如果处理过程中程序崩溃就没法返回了
Eleven 2012-02-05
  • 打赏
  • 举报
回复
以SendMessage来发送消息,是非队列消息,直接到窗口过程中,并不进入消息队列中,处理完成以后SendMessage才返回。
面包大师 2012-02-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zyq_123 的回复:]
引用 1 楼 czh3642210 的回复:
还执行,先执行完SendMessage发送的消息回来执行


是不是就是说先执行完SendMessage发送的消息,完后回来执行余下的语句?
[/Quote]
是的
面包大师 2012-02-05
  • 打赏
  • 举报
回复
SendMessage()函数将消息发送到目标窗口,并等待目标窗口过程函数将消息处理完毕才返回!
zyq_123 2012-02-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 czh3642210 的回复:]
还执行,先执行完SendMessage发送的消息回来执行
[/Quote]

是不是就是说先执行完SendMessage发送的消息,完后回来执行余下的语句?
面包大师 2012-02-05
  • 打赏
  • 举报
回复
还执行,先执行完SendMessage发送的消息回来执行

64,650

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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