|
中的l2个直径为100个单位;其余的为33个单位。使用Ellipse函式来画点。
DrawHands函式绘制时钟的时针、分针和秒针。定义表针轮廓(当它们垂直向上时的形状)的座标存放在一个POINT结构的阵列中。根据时间,这些座标使用RotatePoint函式进行旋转,并用Windows的Polyline函式进行显示。注意时针和分针只有当传递给DrawHands的bChange参数为TRUE时才被显示。当程式更新时钟的表针时,大多数情况下时针和分针不需要重画。
现在让我们将注意力转到视窗讯息处理程式。在WM_CREATE讯息处理期间,视窗讯息处理程式取得目前时间并将它存放在名为dtPrevious的变数中,这个变数将在以後被用於确定时针或者分针从上次更新以来是否改变过。
第一次绘制时钟是在第一个WM_PAINT讯息处理期间,这只不过是依次呼叫SetIsotropic、
DrawClock和DrawHands,後者的bChange参数被设定为TRUE。
在WM_TIMER讯息处理期间,WndProc首先取得新的时间并确定是否需要重新绘制时针和分针。如果需要,则使用一个白色画笔和上一次时间绘制所有的表针,从而有效地擦除它们。否则,只对秒针使用白色画笔进行擦除,然後,再使用一个黑色画笔绘制所有的表针。
以计时器进行状态报告
本章的最後一个程式是我在第五章提到过的。它是一个使用GetPixel函式的好例子。
WHATCLR
(见程式8-5)显示了滑鼠游标下目前图素的RGB颜色。
|