计时器(十五)

2010-12-30 21:12:14 · 作者: · 浏览: 16746
E) ;
return 0 ;

case WM_SIZE:
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;
return 0 ;

case WM_TIMER:
InvalidateRect (hwnd, NULL, TRUE) ;
return 0 ;

case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;

SetMapMode (hdc, MM_ISOTROPIC) ;
SetWindowExtEx (hdc, 276, 72, NULL) ;
SetViewportExtEx (hdc, cxClient, cyClient, NULL) ;

SetWindowOrgEx (hdc, 138, 36, NULL) ;
SetViewportOrgEx (hdc, cxClient / 2, cyClient / 2, NULL) ;
SelectObject (hdc, GetStockObject (NULL_PEN)) ;
SelectObject (hdc, hBrushRed) ;

DisplayTime (hdc, f24Hour, fSuppress) ;

EndPaint (hwnd, &ps) ;
return 0 ;

case WM_DESTROY:
KillTimer (hwnd, ID_TIMER) ;
DeleteObject (hBrushRed) ;
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}

DIGCLOCK视窗如图8-1所示。


 

图8-1 DIGCLOCK的萤幕显示

虽然,在图8-1中您看不到时钟的数字是红色的。DIGCLOCK的视窗讯息处理程式在处理WM_CREATE讯息处理期间建立了一个红色的画刷并在处理WM_DESTROY讯息处理期间清除它。WM_CREATE讯息也为DIGCLOCK设定了一个一秒的计时器,该计时器在处理WM_DESTROY讯息处理期间被终止(待会将讨论对GetLocaleI