什么是消息循环?

super_pi 2010-04-04 08:32:22
到底什么是消息循环,是不是专门的一个线程来负责接收消息?
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;

这段代码究竟是谁来执行?是创建窗口的线程吗?
我概念有点问题,麻烦教教,谢谢
...全文
166 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
keepdoingit 2010-04-05
  • 打赏
  • 举报
回复
不是"专门的线程." 你可以看一下,一个最简单的SDK程序没有另外开线程,只有一个系统为它创建的主线程.在这里接收消息,处理消息. 你找一下"深入浅出MFC"里面的 图1-2.
super_pi 2010-04-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sullensun 的回复:]
开2个贴。。。
[/Quote]
我不知道该放哪。。。
在问下,是不是就是创建窗口的那个线程?
DispatchMessage (&msg) ;这到底是干嘛的?
谢谢
哈利路亚1874 2010-04-05
  • 打赏
  • 举报
回复
我的理解:消息循环是由主线程负责,从消息队列中得到消息后分发给每个窗口处理函数
blueink_200451 2010-04-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wltg2001 的回复:]
每一个线程如果有需要的话,系统就会为这个线程建立一个消息队列,而线程中通过
while (GetMessage (&msg, NULL, 0, 0))...
这段代码从消息队列中取得消息。
这段代码由谁来执行这个问题楼主一定是糊涂了,当然是写在什么地方,就由谁来执行了,你写在主线程的消息循环当然由主线程来执行,写在另一个线程中的消息循环自然由这个线程来执行了。
感觉楼主将消息队列和……
[/Quote]up
zxdyu2009 2010-04-05
  • 打赏
  • 举报
回复
http://www.sunxin.org/video/vc.htm
看孙鑫老师的第一讲,可以在线观看,也可以下载下来看。
wltg2001 2010-04-05
  • 打赏
  • 举报
回复
每一个线程如果有需要的话,系统就会为这个线程建立一个消息队列,而线程中通过
while (GetMessage (&msg, NULL, 0, 0))...
这段代码从消息队列中取得消息。
这段代码由谁来执行这个问题楼主一定是糊涂了,当然是写在什么地方,就由谁来执行了,你写在主线程的消息循环当然由主线程来执行,写在另一个线程中的消息循环自然由这个线程来执行了。
感觉楼主将消息队列和消息循环弄混淆了。
SullenSun 2010-04-04
  • 打赏
  • 举报
回复
开2个贴。。。
WaistCoat10 2010-04-04
  • 打赏
  • 举报
回复
第一个线程来执行
Kudeet 2010-04-04
  • 打赏
  • 举报
回复
通常不是专门一个线程接收消息!
如果你想你的线程能接收消息,就需要这个线程包含这样的代码执行循环!
通常这个代码是给主线程去执行的,一般是创建窗口的线程!


消息循环的代码是负责接收分发消息...如果线程需要处理界面元素,通常需要创建窗口,执行这样的消息循环代码。

15,471

社区成员

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

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