www.98455.com:第八章 计时器(BEEPER1)

www.98455.com 1www.98455.com 2

 1 *------------------------------------- 2 BEEPER1.C -- Timer Demo Program No.1 3 (c) Charles Petzold, 1998 4 -------------------------------------*/ 5 6 #include <Windows.h> 7 8 #define ID_TIMER 1 9 10 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);11 12 int WINAPI WinMain( __in HINSTANCE hInstance13 , __in_opt HINSTANCE hPrevInstance14 , __in LPSTR lpCmdLine15 , __in int nShowCmd )16 {17 static TCHAR szAppName[] = TEXT("Bepper1");18 HWND hwnd;19 MSG msg;20 WNDCLASS wndclass;21 22 wndclass.style = CS_HREDRAW | CS_VREDRAW;23 wndclass.lpfnWndProc = WndProc;24 wndclass.cbClsExtra = 0;25 wndclass.cbWndExtra = 0;26 wndclass.hInstance = hInstance;27 wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);28 wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);29 wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);30 wndclass.lpszMenuName = NULL;31 wndclass.lpszClassName = szAppName;32 33 if (!RegisterClass(&wndclass))34 {35 MessageBox(NULL, TEXT("Program requires Windows NT!")36 , szAppName, MB_ICONERROR);37 return 0;38 }39 40 hwnd = CreateWindow(szAppName, TEXT("Beeper1 Timer Demo")41 , WS_OVERLAPPEDWINDOW42 , CW_USEDEFAULT, CW_USEDEFAULT43 , CW_USEDEFAULT, CW_USEDEFAULT44 , NULL, NULL, hInstance, NULL);45 46 ShowWindow(hwnd, nShowCmd);47 UpdateWindow(hwnd);48 49 while (GetMessage(&msg, NULL, 0, 0))50 {51 TranslateMessage(&msg);52 DispatchMessage(&msg);53 }54 55 return msg.wParam;56 }57 58 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)59 {60 static BOOL fFlipFlop = FALSE;61 HBRUSH hBrush;62 HDC hdc;63 PAINTSTRUCT ps;64 RECT rc;65 66 switch (message)67 {68 case WM_CREATE:69 SetTimer(hwnd, ID_TIMER, 1000, NULL);70 return 0;71 72 case WM_TIMER:73 MessageBeep(-1);74 fFlipFlop = !fFlipFlop;75 InvalidateRect(hwnd, NULL, FALSE);76 return 0;77 78 case WM_PAINT:79 hdc = BeginPaint(hwnd, &ps);80 81 GetClientRect(hwnd, &rc);82 hBrush = CreateSolidBrush(fFlipFlop ? RGB(255, 0, 0) : RGB(0, 0, 255));83 FillRect(hdc, &rc, hBrush);84 85 EndPaint(hwnd, &ps);86 DeleteObject(hBrush);87 return 0;88 89 case WM_DESTROY:90 KillTimer(hwnd, ID_TIMER);91 PostQuitMessage(0);92 return 0;93 }94 95 return DefWindowProc(hwnd, message, wParam, lParam);96 }

www.98455.com,BEEPER1.C

 

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。