Windows编程:计时器的创建

来源:互联网 发布:学习ios软件 编辑:程序博客网 时间:2024/05/17 23:07
    计时器的使用主要分为创建、处理、销毁三个部分。
        ①. 创建: 创建一个计时器并设定其定计时器的任务周期, 例如每5秒向程序发送一条 WM_TIMER 消息 ;
        ②. 处理: 根据接收到的 WM_TIMER 消息让程序作出响应的处理 ;

        ③. 销毁: Windows的计时器属于系统资源, 在使用完毕后应及时销毁。

     

计时器的创建


        要创建一个计时器可以使用 SetTimer 函数, SetTimer函数的原型:
复制代码
    UINT_PTR SetTimer(        HWND hWnd,                //窗口句柄        UINT_PTR nIDEvent,        //定时器的ID        UINT uElapse,             //间隔时间, 单位为毫秒        TIMERPROC lpTimerFunc     //所使用的回调函数    );

参数说明:

    参数一窗口句柄即为接收 WM_TIMER 消息的窗口句柄;
    参数二为设置该计时器的ID, 用于与其他的计时器进行区分;
    参数三为计时器发送 WM_TIMER 消息的时间间隔, 单位为毫秒, 最大可设置的时间间隔为一个 unsigned long int 型所能容下的数据大小, 为 4 294 967 295 毫秒(约合49.7天), 当设定的时间间隔到了后Windows就会向应用程序的消息队列放入一个 WM_TIMER 消息 ;
    参数四为定时器所使用的回调函数, 当使用回调函数时, 所产生的 WM_TIMER 消息自动调用回调函数进行处理。
    
    其函数的返回值为成功创建的定时器的ID。
    
    你可以在任何时候创建一个新的计时器, 例如在接收到 WM_CREATE 消息时。
    
    创建计时器的三种方式:
        方式一: 不使用回调函数

            SetTimer( hwnd, nIDEvent, uiMsecInterval, NULL ) ;
        创建举例:                SetTimer( hwnd, 1, 100, NULL ) ;
            这样我们就创建了一个ID为1, 消息频率为100毫秒, 没有使用回调函数的计时器, 每当程序运行100毫秒Windows就会向应用程序的消息队列里放入一个 WM_TIMER 消息。
           

        方式二: 使用回调函数


            SetTimer( hwnd, nIDEvent, uiMsecInterval, TimeProc ) ;
    创建举例:                SetTimer( hwnd, 1, 100, TimeProc ) ;

            TimeProc即为该定时器所指定使用的回调函数, 它可以是你喜欢的任何名字, 但是函数声明时的类型必须为 CALLBACK 型, 表示该函数为回调函数, 需要注意的时, 当为定时器使用回调函数时, 该定时器所发出的 WM_TIMER 消息将直接发送给回调函数进行处理并从消息队列里销毁该消息。    

        方式三: 不使用窗口句柄

            iTimerID = SetTimer( NULL, 0, uiMsecInterval, TimeProc ) ;

            当忽略窗口句柄时, 那么第二个参数计时器ID也应被忽略, 填充0, 由系统随机分配一个与其他定时器不重复的ID, 返回值即为分配到的ID, 如果返回值为0表示计时器创建失败, 如果要处理该定时器发出的消息需要配合回调函数使用。
原创粉丝点击