码迷,mamicode.com
首页 > 其他好文 > 详细

创建一个简单的计时器

时间:2016-04-27 22:28:26      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

#include<windows.h>
#include<tchar.h>
#define TIME 5

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    WNDCLASS clock;
    static TCHAR* szAppName = TEXT("定时唤醒程序");
    HWND hwnd = NULL;
    MSG msg;

    clock.style = CS_HREDRAW | CS_VREDRAW;
    clock.lpfnWndProc = WndProc;
    clock.cbClsExtra = 0;
    clock.cbWndExtra = 0;
    clock.hInstance = hInstance;
    clock.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
    clock.hCursor = LoadCursor(NULL, IDC_ARROW);
    clock.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    clock.lpszMenuName = NULL;
    clock.lpszClassName = szAppName;

    if (!RegisterClass(&clock))
    {
        MessageBox(NULL, TEXT("这个程序只能在Win32下运行!"), TEXT("错误!!!"), MB_ICONERROR);
        return 0;
    }

    hwnd = CreateWindow(szAppName,
        TEXT("休息休息!"),
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        400,
        100,
        NULL,
        NULL,
        hInstance,
        NULL);

    ShowWindow(hwnd, iCmdShow);

    UpdateWindow(hwnd);

    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rect;
    TCHAR words[1024];

    switch (message)
    {
    case WM_CREATE:
        SetTimer(hwnd, 1, 1000 * 60 * TIME, NULL);
        break;


    case WM_PAINT:

        hdc = BeginPaint(hwnd, &ps);

        GetClientRect(hwnd, &rect);

        DrawText(hdc, TEXT("该喝水了!——DrawText( );"), -1, &rect, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
        TextOut(hdc, 0, 0, words, wsprintf(words, TEXT("该喝水了!——TextOut();")));

        EndPaint(hwnd, &ps);

        return 0;


    case WM_TIMER:
        ShowWindow(hwnd, SW_SHOWNORMAL);
        break;


    case WM_DESTROY:
        KillTimer(hwnd, 1);
        PostQuitMessage(0);
        break;
    }
    return DefWindowProc(hwnd, message, wParam, lParam);
}

程序使用的函数:

SetTimer(hwnd, 1, 3000, NULL);                —一个计时器函数
    1——计时器编号
    3000——时间,以毫秒为单位

KillTimer(hwnd, 1);                    ——移除计时器, 一般与SetTimer 成对使用
    1——计时器编号



RECT结构            ——rect这个对象是用来存储成对出现的参数, 比如矩形的坐上角坐标、宽度和高度
    left——指定矩形框左上角的 x 坐标
    top——……………………y 坐标
    right——指定矩形框右下角的 x 坐标
    bottom——……………………y 坐标



GetClientRect(hwnd, lpRect);                ——将窗口的客户区的坐标写入 RECT 的结构中
    lpRect——指向 RECT 结构的指针中



DrawText(hac, lpString, nCount, lpRect, uFormat);    ——输出字符函数
    lpString——字符串指针
    nCount——字符串长度, 如果为 -1 则自动计算 ‘\0‘ 之前的字符串长度
    uFormat——设置字符输出在窗口的样式
            DT_CENTER:指定文本水平居中显示。
            DT_SINGLELINE:单行显示文本,回车和换行符都不断行。
            DT_VCENTER:指定文本垂直居中显示。该标记只在单行文本输出时有效,所以它必须与DT_SINGLELINE结合使用



TextOut(hdc, x, y, lpString, nCount);            ——输出字符函数
    x——开始绘制文字的左上角距窗口左边的距离
    y——……………………右上角…………



ShowWindow(hwnd, nCmdShow);    ——窗口显示设置
    nCmdShow——指定窗口如何显示
            SW_SHOW:在窗口原来的位置以原来的尺寸激活和显示窗口
            SW_HIDE:隐藏窗口并激活其他窗口
            SW_RESTORE:激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置
            …………
            …………

 

 

FlashWindow(hwnd, TRUE);      ——窗口图表闪动函数

  TRUE——TRUE指即使窗口处于激活状态也闪动窗口图表,

        FALSE 指只有窗口处于未激活状态才闪动图表

创建一个简单的计时器

标签:

原文地址:http://www.cnblogs.com/mystyle1433/p/5440538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!