timeSetEvent
Header: Declared in Mmsystem.h; include Windows.h.
Library: Use Winmm.lib.
MSDN里定义的函数原型如下:
MMRESULT timeSetEvent( UINT uDelay , //以毫秒指定事件的周期 UINT uResolution , //以毫秒指定延时的精度,数值越小定时器事件分辨率越高。缺省值为1ms。 LPTIMECALLBACK lpTimeProc , //指向一个回调函数 DWORD dwUser , //存放用户提供的回调数据 UINT fuEvent //指定定时器事件类型 );
*注:fuEvent :指定定时器事件类型:
TIME_ONESHOT:uDelay毫秒后只产生一次事件
TIME_PERIODIC :每隔uDelay毫秒周期性地产生事件。
当然,事件类型不止这两个,其他的可参考MSDN。
该函数的参数说明如下:参数uDelay表示延迟时间;参数uResolution表示时间精度,在Windows中缺省值为 1ms;lpTimeProc表示回调函数,为用户自定义函数,定时调用;参数dwUser表示用户提供的回调数据;参数fuEvent为定时器的事件类型,TIME_ONESHOT表示执行一次;TIME_PERIODIC:周期性执行。具体应用时,可以通过调用timeSetEvent()函数,将需要周期性执行的任务定义在lpTimeProc回调函数中(如:定时采样、控制等),从而完成所需处理的事件。需要注意的是:任务处理的时间不能大于周期间隔时间。另外,在定时器使用完毕后,应及时调用 timeKillEvent()将之释放。
示例:
//创建win32控制台程序; #include <stdio.h> #include <Windows.h> #include <Mmsystem.h> #pragma comment(lib, "Winmm.lib") void WINAPI onTimeFunc(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2); int main(int argc, char * argv[]) {MMRESULT timer_id;int n = 0;timer_id = timeSetEvent(4000, 1, (LPTIMECALLBACK)onTimeFunc, (DWORD)NULL, TIME_PERIODIC);/*if(NULL == timer_id){printf("timeSetEvent() failed with error %d\n", GetLastError());return 0;}*/while(n<20){printf("Hello World\n");Sleep(2000);n++;}timeKillEvent(timer_id); //释放定时器return 1; } void WINAPI onTimeFunc(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2) {printf("time out\n");return; }
转载于:https://www.cnblogs.com/tinaluo/p/7929781.html
timeSetEvent相关推荐
- timeSetEvent、回调函数、CCriticalSection
timeSetEvent https://baike.baidu.com/item/timeSetEvent/6645204 回调函数 https://blog.csdn.net/bzhxuexi/a ...
- timeSetEvent的用法(一)
由于想在一个DLL中使用TTimer,想把它做成一个监控程序,然后采用DLL远程注入的方式,把它注入到Explorer.exe或 DLLHOST进程中,妈的,怎么像木马啊#¥#%¥%,其实它就是一个木 ...
- 关于timeSetEvent的精确度缺陷分析_备份以防后续使用到时作为参考
原文: https://blogs.msdn.microsoft.com/mediasdkstuff/2009/07/02/why-are-the-multimedia-timer-apis-time ...
- VC中基于 Windows 的精确定时
方式一:VC中的WM_TIMER消息映射能进行简单的时间控制.首先调用函数SetTimer()设置定时 间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔.然后在应用程序中增 ...
- 【转】【VC】VC程序运行时间测试函数
1:Sleep函数 使用: sleep(1000),在Windows和Linux下1000代表的含义并不相同,Windows下的表示1000毫秒,也就是1秒钟: Linux下表示1000秒,Linux ...
- queuetimer,如何使用CreateTimerQueueTimer建立在C#中高分辨率计时器?
I've used a Windows multimedia dll to created a high resolution timer with But the timeSetEvent() pa ...
- C#中的三种timer
转 https://blog.csdn.net/hoiven/article/details/51362582 如果你需要使用规律的时间间隔重复执行一些方法,最简单的方式是使用定时器(timer). ...
- VC++ 常用编程技巧总结
VC++6.0的使用以及编程技巧整理 1.MDI子窗口一启动就最大化 BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs) ...
- MFC90条技巧-带目录
1."属性页的添加: 2."List Control中标题栏(Column)的添加: 3."ToolBar和StatusBar中控件的添加: 4."通过Cont ...
最新文章
- 蜘蛛爬虫网络高像素图片抓取工具[搜索引擎]
- xshell远程登录ubuntu设置流程
- Android之SharedPreferences 讲解
- 用python恢复删除的文件_使用python删除N天前的文件
- Lua的require机制
- 2名数学家或发现史上最快超大乘法运算法,欲破解困扰人类近半个世纪的问题...
- centos tar安装mysql_centos系统通过tar.gz包安装mysql5.7.19
- 旋转校正原理_【干货】全站仪水准器的检校原理及方法,值得学习!
- Progressive Web App:模仿原生应用的Web应用
- 基于LabVIEW 2018开发的自动化测试系统源码,该系统模仿TestStand编写
- Python 快速设置 Excel 表格边框
- Pandas库之DataFrame
- Django:A server error occurred. Please contact the administrator.
- (C语言实现)栈求表达式的值(实数范围内)
- Java学习从这里开始
- notify验签失败及其原因
- 分数类中的运算符重载(续)
- 运用调用函数判断是否为素数
- python全栈指的是什么_python全栈指的是什么
- 全球与中国圆顶隔膜阀市场发展动态及投资趋向建议报告2021年版
热门文章
- spring27: bean装配-基于xml
- jvm十三:类加载器命名空间
- python三十九:logging模块
- springcloud(四):熔断器Hystrix
- Nginx+Redis+Ehcache:大型高并发与高可用的三层缓存架构总结
- Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)...
- [译]Stack View 自定义间隙
- sql语句按照汉字拼音首字母排序
- jQuery之防止冒泡事件
- Exchange Server2013 系列九:常规配置