博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++中Timer的用法
阅读量:6828 次
发布时间:2019-06-26

本文共 1322 字,大约阅读时间需要 4 分钟。

hot3.png

1. 使用windows api函数SetTimer设定计时器

UINT_PTR SetTimer( HWND hWnd,   //   窗口句柄 UINT_PTR nIDEvent,   //   定时器ID,多个定时器时,可以通过该ID判断是哪个定时器 UINT uElapse,   //   时间间隔,单位为毫秒 TIMERPROC lpTimerFunc   //   回调函数 );  //如果已传入参数nIDEvent,则函数的返回值与nIDEvent相同,如果参数nIDEvent为NULL,则函数的返回值为系统为这//个定时器设定的一个ID

注意:设置第二个参数时要注意,如果设置的等待时间比处理时间短,程序可能会出现问题。

2. 编写Timer的回调函数

void CALLBACK TimerProc(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime);//hWnd: 与SetTimer中所传入的hWnd一致//nMsg: WM_TIMER消息//nTimerid: 计时器编号//dwTime: 从系统启动到现在的时间(用毫秒表示),这是由GetTickCount函数所返回的

3. 在使用完计时器后必须调用“KillTimer(NULL, iTimerID)”来销毁计时器

Sample code#include 
#include 
void CALLBACK TimerProc(HWND hwnd, UINT Msg, UINT idEvent, DWORD dwTime);int main(){ UINT timerId = 1; MSG msg; // int n = GetMessage(&msg, NULL, NULL, NULL);  //Wait for message, block the thread when getting no message SetTimer(NULL, timerId, 1000, TimerProc);  //每间隔1000毫秒定时器发送 一条信息,并执行回调函数中的代码 int nTemp; while ((nTemp = GetMessage(&msg, NULL, NULL, NULL)) && (-1 != nTemp) && (0 != nTemp)) {  if (WM_TIMER == msg.message)  {   cout << "I got a message" << endl;   TranslateMessage(&msg);   DispatchMessage(&msg);  } } return 0;}void CALLBACK TimerProc(HWND hwnd, UINT Msg, UINT idEvent, DWORD dwTime){ cout << "HelloWorld" << endl;}

转载于:https://my.oschina.net/u/2314763/blog/425232

你可能感兴趣的文章
我的友情链接
查看>>
对大文本域进行BASE64编码解码
查看>>
我的友情链接
查看>>
关于cisco交换机的config.text和startup-config
查看>>
可执行JAR读写内外文件
查看>>
libsvm for python学习(2)
查看>>
Windows+Apache搭建PHP开发环境
查看>>
lamp环境测试php问题
查看>>
Handbook of Constraints Programming——Chapter4 Backtracking Search Algorithms-Preliminaries
查看>>
[转载] 信息系统项目管理师视频教程——14 项目进度管理
查看>>
linux 解压文件
查看>>
区块链学习指南
查看>>
LINUX-软件安装(四)
查看>>
JavaScript学习总结(5)——Javascript面向(基于)对象编程
查看>>
Ansible入门
查看>>
Spring常用注解
查看>>
SVN学习总结(1)——SVN简介及入门使用
查看>>
浅谈linux性能调优之五:调优软raid
查看>>
Android sdk下载缓慢解决方式
查看>>
Q+无法启动?启动后立即退出?折腾……
查看>>