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有什么不同?
展开
 我来答
stone_dongdong
2009-12-20 · TA获得超过2853个赞
知道大有可为答主
回答量:1636
采纳率:0%
帮助的人:1026万
展开全部
PeekMessage 瞥一眼的意思。看看消息堆栈里面有没有消息。不管有没有,获取结果以后,立即返回。(不阻塞)。
GetMessage 查看消息堆栈,如果有消息,就读取消息返回,同时清除这条消息。如果没有消息,就等待,直到消息堆栈中有消息了再返回。

WaitMessage 不常用,它综合了上面2个函数的功能。它是查看消息堆栈如果没有消息,就挂起当前线程阻塞,切换到别的线程,直到堆栈有消息为止。
张成海fengle
2009-12-20
知道答主
回答量:12
采纳率:0%
帮助的人:0
展开全部
f(;;)是一个死循环,目的是不断的从消息队列中取消息,
而PeekMessage();如果消息队列中有消息的话,就把它放到消息队列,如果没有则else的WaitMessage(是当没有消息的时候,就终止主线程)
而GetMessage()获取消息,
TranslateMessage()用途是将虚拟建的消息翻译成可识别的消息,DispatchMessage()用途是将消息发送到指定窗口
PeekMessage()当没消息的时候,会返回一个NULL,而GetMessage()当没有消息的时候,会让程序处于休眠状态,在这个程序中用PeekMessage()为空的时候,程序就进入了WaitMessage()而他会终止线程
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式