Windows编程:计时器的创建
来源:互联网 发布:学习ios软件 编辑:程序博客网 时间:2024/05/17 23:07
计时器的使用主要分为创建、处理、销毁三个部分。
①. 创建: 创建一个计时器并设定其定计时器的任务周期, 例如每5秒向程序发送一条 WM_TIMER 消息 ;
②. 处理: 根据接收到的 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, nIDEvent, uiMsecInterval, TimeProc ) ;
TimeProc即为该定时器所指定使用的回调函数, 它可以是你喜欢的任何名字, 但是函数声明时的类型必须为 CALLBACK 型, 表示该函数为回调函数, 需要注意的时, 当为定时器使用回调函数时, 该定时器所发出的 WM_TIMER 消息将直接发送给回调函数进行处理并从消息队列里销毁该消息。
方式三: 不使用窗口句柄
iTimerID = SetTimer( NULL, 0, uiMsecInterval, TimeProc ) ;
当忽略窗口句柄时, 那么第二个参数计时器ID也应被忽略, 填充0, 由系统随机分配一个与其他定时器不重复的ID, 返回值即为分配到的ID, 如果返回值为0表示计时器创建失败, 如果要处理该定时器发出的消息需要配合回调函数使用。
①. 创建: 创建一个计时器并设定其定计时器的任务周期, 例如每5秒向程序发送一条 WM_TIMER 消息 ;
②. 处理: 根据接收到的 WM_TIMER 消息让程序作出响应的处理 ;
③. 销毁: Windows的计时器属于系统资源, 在使用完毕后应及时销毁。
计时器的创建
复制代码
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表示计时器创建失败, 如果要处理该定时器发出的消息需要配合回调函数使用。
阅读全文
0 0
- Windows编程:计时器的创建
- Windows编程:计时器消息的处理、销毁计时器
- Windows编程之计时器
- NSTimer 计时器的创建
- windows核心编程-可等待的计时器内核对象
- Windows平台的计时器
- Windows编程(三)---计时器篇
- windows下的时间计时器
- Windows编程-进程的创建
- Windows编程-线程的创建
- Android 编程下的计时器
- 这个是WINDOWS的计时器编程,其中有个错误,帮忙看一下吧
- windows 计时器
- windows API 实现精确的打点计时器
- windows编程 全屏窗口的创建总结
- 服务器计时器、Windows 计时器和线程计时器
- 服务器计时器与 Windows 计时器
- VB高精度计时器编程的讨论
- 新买的stm8使用IAR烧录出错问题解决
- 安卓自定义控件
- 提高篇第二十一讲——有序数组中插入数据
- HDUoj
- 最新PADS无模命令
- Windows编程:计时器的创建
- Ubuntu常用命令合集
- JSP数据交互(二)
- Java后台之路(09)-Servlet
- 网络流&费用流总结
- javaweb之jsp之out隐式对象原理
- org.hibernate.exception.GenericJDBCException: could not execute statement at org.hibernate.exceptio
- caffe softmax源码解读
- Jason Brown的R快速入门方法