• 第八章 计时器(BEEPER1)


     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 hInstance
    13     , __in_opt HINSTANCE hPrevInstance
    14     , __in LPSTR lpCmdLine
    15     , __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_OVERLAPPEDWINDOW
    42         , CW_USEDEFAULT, CW_USEDEFAULT
    43         , CW_USEDEFAULT, CW_USEDEFAULT
    44         , 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 }
    BEEPER1.C
  • 相关阅读:
    Java魔法堂:String.format详解
    Postgresql 正则表达式
    Linux下安装LAMP(Apache+PHP+MySql)和禅道
    Redis 启动警告错误解决[转]
    Postgresql: UUID的使用
    在Linux下安装RabbitMQ
    Python的包管理工具Pip
    在Linux CentOS 6.6上安装RedisLive
    [转]在Linux CentOS 6.6上安装Python 2.7.9
    在Linux上rpm安装运行Redis 3.0.4
  • 原文地址:https://www.cnblogs.com/web1013/p/9049533.html
Copyright © 2020-2023  润新知