设为首页 加入收藏

TOP

图形基础(七十四)
2010-12-30 21:10:52 来源: 作者: 【 】 浏览:40148
Tags:图形 基础
IT)
break ;
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
else
{
// 完成某些工作的其他行程式
}
}
return msg.wParam ;

注意,WM_QUIT讯息被另外挑出来检查。在普通的讯息回圈中您不必这么作,因为如果GetMessage接收到一个WM_QUIT讯息,它将传回0,但是PeekMessage用它的传回值来指示是否得到一个讯息,所以需要对WM_QUIT进行检查。

如果PeekMessage的传回值为TRUE,则讯息按通常方式进行处理。如果传回值为FALSE,则在将控制传回给Windows之前,还可以作一点工作(如显示另一个随机矩形)。

(尽管Windows文件上说,您不能用PeekMessage从讯息伫列中删除WM_PAINT讯息,但是这并不是什么大不了的问题。毕竟,GetMessage并不从讯息伫列中删除WM_PAINT讯息。从伫列中删除WM_PAINT讯息的唯一方法是令视窗显示区域的失效区域变得有效,这可以用ValidateRect和ValidateRgn或者BeginPaint和EndPaint对来完成。如果您在使用PeekMessage从伫列中取出WM_PAINT讯息後,同平常一样处理它,那么就不会有问题了。所不能作的是使用如下所示的程式码来清除讯息伫列中的所有讯息:

这行叙述从讯息伫列中删除WM_PAINT之外的所有讯息。如果伫列中有一个WM_PAINT讯息,程式就会永远地陷在while回圈中。)

PeekMessage在Windows的早期版本中比在Windows 98中要重要得多。这是因为Windows的16位元版本使用的是非优先权式的多工(我将在第二十章中讨论这一点)。Windows的Terminal程式在从通讯埠接收输入後,使用一个PeekMessage回圈。列印管理器程式使用这个技术来进行列印,其他的Windows列印应用程式通常都会使用一个PeekMessage回圈。在Windows 98优先权式的多工环境下,程式可以建立多个执行绪,我们将第二十章看到这一点。

不管怎样,有了PeekMessage函式,我们就可以编写一个不停地

首页 上一页 71 72 73 74 75 76 77 下一页 尾页 74/83/83
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇键盘 下一篇输出文字

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: