大龙的博客

常用链接

统计

最新评论

GetMwssage()与peekMessage()的区别

如果消息队列里没有消息的时候不让Getmassage在Windows内部等待,就是说想充分利用程序的所有时间,就应该用peekmassage.


peekmessage是一个类似于Getmessage的函数,区别在于当消息队列里有消息的时候,Peekmessage取回消息,并在eax中返回非零值,没有消息的时候它会直接返回,并在eax中返回零.
所以在返回非零值的时候,程序检查消息是否是WM_QUIT,是则结束消息循环,不是则用标准流程处理消息;返回零的时候,表示是空闲时间,程序就可以做其他工作了,但插入做其他工作的代码执行时间不能太长,以不超过10ms为好,否则会影响正常的消息处理,使窗口的反应看起来很迟钝.如果必须处理很长时间的工作,那么应该将它们分成很多小部分处理,以便有足够频率用Peekmessage来检查消息.


peekmassage 比 Getmassage 多一个参数.这个参数表示在取回消息以后,对消息队列中的消息是否保留.当这个参数是PM_REMOVE时,消息被取回的同时也被从消息队列里删除,而用PM_NOREMOVE的时候,被取回的消息不会从消息队列中删除,函数相当于"偷看"了这条消息.

posted on 2008-08-06 11:10 大龙 阅读(393) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理