计时器(五)

2010-12-30 21:12:14 · 作者: · 浏览: 16721
」的「声音」程式中选择的不同声音)。

BEEPER1在视窗讯息处理程式处理WM_CREATE讯息时设定计时器。在处理WM_TIMER讯息处理期间,BEEPER1呼叫MessageBeep,翻转bFlipFlop的值并使视窗无效以产生WM_PAINT讯息。在处理WM_PAINT讯息处理期间,BEEPER1通过呼叫GetClientRect获得视窗大小的RECT结构,并通过呼叫FillRect改变视窗的颜色。

 程式8-1 BEEPER1
BEEPER1.C
/*-------------------------------------------------------------------------
BEEPER1.C -- Timer Demo Program No. 1
(c) Charles Petzold, 1998
-------------------------------------------------------------------------*/

#include <windows.h>

#define ID_TIMER 1

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("Beeper1") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (H