请问WIN32编程里的GetMessage()和PeekMessage()函数区别??

RabbitLBJ 2009-05-21 07:55:28

请问WIN32编程里的GetMessage()和PeekMessage()函数区别??
在处理消息循环的时候到底用哪个函数更好,一般有什么区别,我看WINDOWS游戏编程大师技巧上一般都用PeekMessage(),说什么有同步功能,而别的WIN32编程书籍大都是用GetMessage(),还是不懂两个到底区别在哪里,各位帮忙解答哈,谢谢了!!
...全文
201 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel880327 2009-05-22
  • 打赏
  • 举报
回复
对于在那种情况下用那个比较好,至少在一般的小游戏编程中常用PeekMessage():
while( TRUE )
{
if( PeekMessage( &msg, NULL, 0,0 ,PM_REMOVE) )
{
if( msg.message == NULL )
break;
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
---代码
RabbitLBJ 2009-05-22
  • 打赏
  • 举报
回复
那具体在哪些时候用GetMessage(),哪些时候用PeekMessage()比较好呢??个人比较笨,大家能举个例吗?谢谢了
pathuang68 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lingyin55 的回复:]
两个函数主要有以下两个区别:
1.GetMessage将等到有合适的消息时才返回,而PeekMessage只是撇一下消息队列。
2.GetMessage会将消息从队列中删除,而PeekMessage可以设置最后一个参数wRemoveMsg来决定是否将消息保留在队列中。

在Windows的内部,GetMessage和PeekMessage执行着相同的代码。而两者最大的不同之处则体现在没有任何消息返回到应用程序的情况下。在此种情况下,PeekMessage会返回一个空值到应用程…
[/Quote]
一个(GetMessage)是同步的,一个(PeekMessage)是异步的。
lingyin55 2009-05-21
  • 打赏
  • 举报
回复
两个函数主要有以下两个区别:
1.GetMessage将等到有合适的消息时才返回,而PeekMessage只是撇一下消息队列。
2.GetMessage会将消息从队列中删除,而PeekMessage可以设置最后一个参数wRemoveMsg来决定是否将消息保留在队列中。

在Windows的内部,GetMessage和PeekMessage执行着相同的代码。而两者最大的不同之处则体现在没有任何消息返回到应用程序的情况下。在此种情况下,PeekMessage会返回一个空值到应用程序,GetMessage会在此时让应用程序休眠。

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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