windows程序设计读书笔记----------(计时器)
来源:互联网 发布:淘宝女装品牌代购 编辑:程序博客网 时间:2024/06/05 16:16
windows计时器是一种输入设备,每隔指定时间都会产生一个消息WM_TIMER,消息被放在应用程序消息队列中。WM_TIMER消息的产生不像DOS系统一样通过截获时钟滴答的BIOS中断来实现的,而是设定一个数值,每一个时钟滴答,该值减一,直到为零,产生一个WM_TIMER消息。在windows 98上,计时器具有与底层计时器相同的55毫秒的周期,也就是说没55毫秒产生一个时钟滴答,而windows NT上,其为10毫秒。例如:当windows 98上设置的时钟间隔为1000毫秒时,也就是说讲18个时钟滴答产生一个计时器消息(WM_TIMER). 值得注意的是,当设置的时钟周期小于系统时钟滴答时,每个时钟滴答(55毫秒)都将产生一个计时器消息。
注:在同一时刻只能有一个WM_TIMER消息在消息队列中,且其优先级比较低。
使用计时器的三种方法:
方法一:
SetTimer(hwnd,iTimerID,uniMescIerval,NULL);//产生计时器消息,并指定接受消息
第一个参数:其为接受计时器消息的窗口句柄。
第二个参数:其为计时器的ID,不能为0,不同计时器不同
第三个参数:时间间隔
KillTimer(hwnd,iTimerID);//停止产生计时器消息
其中第二个参数的值要与产生计时器的消息的计时器ID相同。
注:当需改变一个计时器的时间间隔时,可以再次调用WM_TIMER消息。
方法二:
可以在SetTimer函数中指定接受计时器消息的“回调”函数。
SetTimer(hwnd,iTimerID,iMsecInterval,TimerProc);
第一,二,三个参数与方法一相同,第四个参数为指定回调函数的函数名。
回调函数的格式:
VOID CALLBACK TimerProc(HWND hwnd, UINT message,UINT iTimerID,DWORD dwTime)
{
[处理过程]
}//dwTimer是GetTickCount函数返回值,其记录了自从windows启动到现在已逝去的毫秒
KillTimer(hwnd,iTimerID);
方法三:
iTimerID=SetTimer(NULL,0,wMsecInterval,TimerProc);
如果iTimerID为0,表示没有计时器可以用。
KillTimer(NULL,iTimerID);
该方法很少用到。如果在程序中,需要在不同时刻调用多次SetTimer,但又不想记录那些计时器ID已经被使用过,那么这种方法可能会派上用场。
获取时间:
typedef struct _SYSTEMTIME
{
WORD wYear;
WORD wHour;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
}SYSTEMTIME,*PSYSTEMTIME;
其主要用于GetSystemTime(格林威治时间)和GetLocalTime(当地时间)函数。
- windows程序设计读书笔记----------(计时器)
- 《Windows程序设计》读书笔记之八 计时器
- windows程序设计之计时器(一)
- Windows程序设计之计时器(二)
- Windows程序设计之计时器
- Windows程序设计:计时器
- windows程序设计读书笔记(1)
- windows程序设计读书笔记(2)
- windows程序设计读书笔记(3)
- Windows程序设计读书笔记(1)
- Windows程序设计 读书笔记(1)
- Windows程序设计 读书笔记(2)
- Windows程序设计 读书笔记(3)
- 《Windows程序设计》之计时器1
- 《Windows程序设计》之计时器2
- windows程序设计——计时器
- windows程序设计(4):分解扫雷程序之计时器
- windows程序设计读书笔记(3_1)
- 单片机参数处理[保存与读取]
- PHP 检测手机浏览器的代码
- Smarty缓存问题
- 收集的JS常用正则表达式
- Android进程与生命周期介绍
- windows程序设计读书笔记----------(计时器)
- List<T> 和IQueryable<T>关键性的不同在哪?
- 黑马程序员---交通灯案例的定时器
- Java长期运行后, jps等工具无法连接jvm
- 使用Smsx实现web打印
- Android中Activity共享变量的另一方法:Application context
- 子网划分及子网掩码计算方法
- 一个计算GPA的工具
- “找不到coredll.dll”????