什么是消息循环?
到底什么是消息循环,是不是专门的一个线程来负责接收消息?
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
这段代码究竟是谁来执行?是创建窗口的线程吗?
我概念有点问题,麻烦教教,谢谢
[解决办法]
通常不是专门一个线程接收消息!
如果你想你的线程能接收消息,就需要这个线程包含这样的代码执行循环!
通常这个代码是给主线程去执行的,一般是创建窗口的线程!
消息循环的代码是负责接收分发消息...如果线程需要处理界面元素,通常需要创建窗口,执行这样的消息循环代码。
[解决办法]
不是"专门的线程." 你可以看一下,一个最简单的SDK程序没有另外开线程,只有一个系统为它创建的主线程.在这里接收消息,处理消息. 你找一下"深入浅出MFC"里面的 图1-2.
[解决办法]
每一个线程如果有需要的话,系统就会为这个线程建立一个消息队列,而线程中通过
while (GetMessage (&msg, NULL, 0, 0))...
这段代码从消息队列中取得消息。
这段代码由谁来执行这个问题楼主一定是糊涂了,当然是写在什么地方,就由谁来执行了,你写在主线程的消息循环当然由主线程来执行,写在另一个线程中的消息循环自然由这个线程来执行了。
感觉楼主将消息队列和消息循环弄混淆了。
[解决办法]
我的理解:消息循环是由主线程负责,从消息队列中得到消息后分发给每个窗口处理函数
[解决办法]
http://www.sunxin.org/video/vc.htm
看孙鑫老师的第一讲,可以在线观看,也可以下载下来看。