设为首页 加入收藏

TOP

图形基础(七十三)
2010-12-30 21:10:52 来源: 作者: 【 】 浏览:40154
Tags:图形 基础
程序发送WM_TIMER讯息(我将在第八章中讨论计时器)。对於每条WM_TIMER讯息,您使用GetDC取得一个装置内容,画一个随机的矩形,然後用ReleaseDC释放装置内容。但是这样又降低了程式的趣昧性,因为程式不能尽可能快地画随机矩形,它必须等待WM_TIMER讯息,而这又依赖於系统时钟的解析度。

在Windows中一定有很多「闲置时间」,在这个时间内,所有讯息伫列为空,Windows只停在一个小回圈中等待键盘或者滑鼠输入。我们能否在闲置时间内获得控制,绘制矩形,并且只在有讯息加入程式的讯息伫列之後才释放控制呢?这就是PeekMessage函式的目的之一。下面是PeekMessage呼叫的一个例子:

前面的四个参数(一个指向MSG结构的指标、一个视窗代号、两个值指示讯息范围)与GetMessage的参数相同。将第二、三、四个参数设定为NULL或0时,表明我们想让PeekMessage传回程式中所有视窗的所有讯息。如果要将讯息从讯息伫列中删除,则将PeekMessage的最後一个参数设定为PM_REMOVE。如果您不希望删除讯息,那么您可以将这个参数设定为PM_NOREMOVE。这就是为什么Peek_Message是「偷看」而不是「取得」的原因,它使得程式可以检查程式的伫列中的下一个讯息,而不实际删除它。

GetMessage不将控制传回给程式,直到从程式的讯息伫列中取得讯息,但是PeekMessage总是立刻传回,而不论一个讯息是否出现。当讯息伫列中有一个讯息时,PeekMessage的传回值为TRUE(非0),并且将按通常方式处理讯息。当伫列中没有讯息时,PeekMessage传回FALSE(0)。

这使得我们可以改写普通的讯息回圈。我们可以将如下所示的回圈:

替换为下面的回圈:

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

评论

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