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相关推荐

  1. timeSetEvent、回调函数、CCriticalSection

    timeSetEvent https://baike.baidu.com/item/timeSetEvent/6645204 回调函数 https://blog.csdn.net/bzhxuexi/a ...

  2. timeSetEvent的用法(一)

    由于想在一个DLL中使用TTimer,想把它做成一个监控程序,然后采用DLL远程注入的方式,把它注入到Explorer.exe或 DLLHOST进程中,妈的,怎么像木马啊#¥#%¥%,其实它就是一个木 ...

  3. 关于timeSetEvent的精确度缺陷分析_备份以防后续使用到时作为参考

    原文: https://blogs.msdn.microsoft.com/mediasdkstuff/2009/07/02/why-are-the-multimedia-timer-apis-time ...

  4. VC中基于 Windows 的精确定时

    方式一:VC中的WM_TIMER消息映射能进行简单的时间控制.首先调用函数SetTimer()设置定时 间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔.然后在应用程序中增 ...

  5. 【转】【VC】VC程序运行时间测试函数

    1:Sleep函数 使用: sleep(1000),在Windows和Linux下1000代表的含义并不相同,Windows下的表示1000毫秒,也就是1秒钟: Linux下表示1000秒,Linux ...

  6. queuetimer,如何使用CreateTimerQueueTimer建立在C#中高分辨率计时器?

    I've used a Windows multimedia dll to created a high resolution timer with But the timeSetEvent() pa ...

  7. C#中的三种timer

    转 https://blog.csdn.net/hoiven/article/details/51362582 如果你需要使用规律的时间间隔重复执行一些方法,最简单的方式是使用定时器(timer). ...

  8. VC++ 常用编程技巧总结

    VC++6.0的使用以及编程技巧整理 1.MDI子窗口一启动就最大化      BOOL   CChildFrame::PreCreateWindow(CREATESTRUCT&   cs) ...

  9. MFC90条技巧-带目录

    1."属性页的添加: 2."List Control中标题栏(Column)的添加: 3."ToolBar和StatusBar中控件的添加: 4."通过Cont ...

最新文章

  1. 蜘蛛爬虫网络高像素图片抓取工具[搜索引擎]
  2. xshell远程登录ubuntu设置流程
  3. Android之SharedPreferences 讲解
  4. 用python恢复删除的文件_使用python删除N天前的文件
  5. Lua的require机制
  6. 2名数学家或发现史上最快超大乘法运算法,欲破解困扰人类近半个世纪的问题...
  7. centos tar安装mysql_centos系统通过tar.gz包安装mysql5.7.19
  8. 旋转校正原理_【干货】全站仪水准器的检校原理及方法,值得学习!
  9. Progressive Web App:模仿原生应用的Web应用
  10. 基于LabVIEW 2018开发的自动化测试系统源码,该系统模仿TestStand编写
  11. Python 快速设置 Excel 表格边框
  12. Pandas库之DataFrame
  13. Django:A server error occurred. Please contact the administrator.
  14. (C语言实现)栈求表达式的值(实数范围内)
  15. Java学习从这里开始
  16. notify验签失败及其原因
  17. 分数类中的运算符重载(续)
  18. 运用调用函数判断是否为素数
  19. python全栈指的是什么_python全栈指的是什么
  20. 全球与中国圆顶隔膜阀市场发展动态及投资趋向建议报告2021年版

热门文章

  1. spring27: bean装配-基于xml
  2. jvm十三:类加载器命名空间
  3. python三十九:logging模块
  4. springcloud(四):熔断器Hystrix
  5. Nginx+Redis+Ehcache:大型高并发与高可用的三层缓存架构总结
  6. Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)...
  7. [译]Stack View 自定义间隙
  8. sql语句按照汉字拼音首字母排序
  9. jQuery之防止冒泡事件
  10. Exchange Server2013 系列九:常规配置