VC++消息循环的问题...大家来帮帮忙..谢谢!
for(;;){if(PeekMessage(&iMsg,NULL,0,0,PM_NOREMOVE)){if(!GetMessage(&iMsg,NULL,0,0))re...
for(;;)
{
if(PeekMessage(&iMsg,NULL,0,0,PM_NOREMOVE))
{
if(!GetMessage(&iMsg,NULL,0,0))
return iMsg.wParam;
TranslateMessage(&iMsg);
DispatchMessage(&iMsg);
}
else
WaitMessage();
}
其中PeekMessage跟WaitMessage是实现什么功能的?
这样与直接GetMessage TranslateMessage DispatchMessage有什么不同? 展开
{
if(PeekMessage(&iMsg,NULL,0,0,PM_NOREMOVE))
{
if(!GetMessage(&iMsg,NULL,0,0))
return iMsg.wParam;
TranslateMessage(&iMsg);
DispatchMessage(&iMsg);
}
else
WaitMessage();
}
其中PeekMessage跟WaitMessage是实现什么功能的?
这样与直接GetMessage TranslateMessage DispatchMessage有什么不同? 展开
2个回答
展开全部
f(;;)是一个死循环,目的是不断的从消息队列中取消息,
而PeekMessage();如果消息队列中有消息的话,就把它放到消息队列,如果没有则else的WaitMessage(是当没有消息的时候,就终止主线程)
而GetMessage()获取消息,
TranslateMessage()用途是将虚拟建的消息翻译成可识别的消息,DispatchMessage()用途是将消息发送到指定窗口
PeekMessage()当没消息的时候,会返回一个NULL,而GetMessage()当没有消息的时候,会让程序处于休眠状态,在这个程序中用PeekMessage()为空的时候,程序就进入了WaitMessage()而他会终止线程
而PeekMessage();如果消息队列中有消息的话,就把它放到消息队列,如果没有则else的WaitMessage(是当没有消息的时候,就终止主线程)
而GetMessage()获取消息,
TranslateMessage()用途是将虚拟建的消息翻译成可识别的消息,DispatchMessage()用途是将消息发送到指定窗口
PeekMessage()当没消息的时候,会返回一个NULL,而GetMessage()当没有消息的时候,会让程序处于休眠状态,在这个程序中用PeekMessage()为空的时候,程序就进入了WaitMessage()而他会终止线程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询