#include <windows.h>LRESULT __stdcall WndProc(HWND, UINT, WPARAM, LPARAM);int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
char szWindowClass[] = "Timer"; // 注册窗口类
WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); 
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = 0;
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = NULL; ::RegisterClassEx(&wcex);
    
// 创建并线程主窗口
HWND hWnd = ::CreateWindowEx( 
WS_EX_CLIENTEDGE, // 扩展样式
szWindowClass, // 类名
"定时器的使用", // 标题
WS_OVERLAPPEDWINDOW, // 窗口样式
CW_USEDEFAULT, // 初始 X 坐标
CW_USEDEFAULT, // 初始 X 坐标
CW_USEDEFAULT, // 宽度
CW_USEDEFAULT, // 高度
NULL, // 父窗口句柄
NULL,         // 菜单句柄
hInstance, // 程序实例句柄
NULL);  ::ShowWindow(hWnd, nShowCmd);
::UpdateWindow(hWnd); // 进入消息循环
MSG msg;
while(::GetMessage(&msg, NULL, 0, 0))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg); 
}

return 1;
}
 #define IDT_TIMER 1// 消息处理函数
LRESULT __stdcall WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

    static int nNum; // 计数
static int bSetTimer; // 指示是否安装了定时器
    int ax,ay,cx,cy;
      ax=50; ay=50; 
      cx=100; cy=100;
         PAINTSTRUCT ps;
HDC hdc;
   switch(message)
{
case WM_CREATE: // 窗口正在被创建
bSetTimer = FALSE;
break;
case WM_PAINT: // 窗口客户区需要重画
hdc = ::BeginPaint(hWnd, &ps);
::Rectangle(hdc,ax,ay,cx,cy);
                   ::EndPaint(hWnd, &ps);
                   break;
case WM_TIMER: // 定时器时间已到
if(wParam==IDT_TIMER)
{   hdc =GetDC(hWnd);
HPEN hPen =::CreatePen(PS_SOLID,1,RGB(0,0,0));
HPEN hOldPen=(HPEN)::SelectObject(hdc,hPen);
                           ::Rectangle(hdc,ax,ay,cx,cy);
::SelectObject(hdc,hOldPen);
::DeleteObject(hPen);
ax=ax+70;
         cx=cx+70;
   ::Rectangle(hdc,ax,ay,cx,cy);
// 发一声“嘟”的声音
::MessageBeep(MB_OK);
}
     break;
case WM_LBUTTONDOWN:
     
          ::SetTimer(hWnd, IDT_TIMER, 500,NULL);

break;
case WM_CLOSE: // 用户要求关闭窗口
if(bSetTimer)
::KillTimer(hWnd, IDT_TIMER);
break;
case WM_DESTROY: // 窗口正在被销毁
::PostQuitMessage(0);
break;
}
return ::DefWindowProc(hWnd, message, wParam, lParam);
}