Windows学习笔记15——定时器

1、关于定时器(计时器)

      Windows计时器是PC硬件和ROM BIOS架构下的计时器的一种相对简单的扩充。Windows本身处理硬件中断,Windows应用程序不拦截BIOS中断。

      因为Windows应用程序从正常的消息队列中取得WM_TIMER消息,所以应用程序在进行其他处理时不必担心WM_TIMER消息会意外中断程序。

      Windows应用程序不能以高于解析度的频率(Windows98, 每秒18.2次, WindowsNT,每秒约100次)接收WM_TIMER消息。

      WM_TIMER消息是非同步的,在消息队列中是低优先级的,和WM_PAINT消息一样,只有在消息队列中没有其他消息时才接收它们。(由此可以知道WM_TIMER消息并不能准确地定时)

      WIndows不能持续向消息队列中放入多个WM_TIMER消息,而是将多余的WM_TIMER消息组合成一个消息。

2、定时器的使用

 方法一:

            SetTimer(hwnd, TIMERID, uiMsecInterval, NULL);

            KillTimer(hwnd, TIMERID);

 方法二:

            void CALLBACK  TimerProc(HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)

            {

                处理WM_TIMER消息

             }

            SetTimer(hwnd, iTimerID, uiMsecInterval, TimerProc);

            KillTimer(hwnd, iTimerID);

            Windows发送WM_TIMER消息给TimerProc回调函数,而不是WndProc。

 方法三:

           iTimerID = SetTimer(NULL, 0, wMescInterval, TimerProc);

           KillTimer(NULL, iTimerID);

3、GetLocalTime取得目前时间

     SYSTEMTIME结构

     typedef struct _SYSTEMTIME

    {

          WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour;

          WORD wMinute; WORD wSecond; WORD wMilliseconds;

    }SYSTEMTIME, *PSYSTEMTIME;

       SYSTEMTIME结构主要用于GetLocalTime和GetSystemTime函数,GetSystemTime函数得到目前的世界时间。GetLocalTime函数得到当地时间,依据电脑所在时区。

      此外,还有SetLoaclTime和SetSystemTime。

4、格式化时间

     格式化日期和时间的最简单方法是:调用GetDataFormat 和GetTimeFormat函数

     GetLocaleInfo函数取得与指定的“本地”有关的信息。

     原型:int GetLocaleInfo(LCID Locale, LCTYPE LCType, LPTSTR lpLCData, int cchData);

     参数:Locale :(long) 欲获得信息的“地方”ID,

                    LCType:( Long),要取回的信息类型。
               lpLCData (String),指定一个缓冲区,用于装载要求的信息。注意预先将字串格式化成合适的长度
               cchData (Long),lpLCData缓冲区的长度;如设为零,表示获取必要的缓冲区长度.
     返回值:(Long),装载到缓冲区的字符数,或者cchData要求的缓冲区长度。零表示出错。会将GetLastError设为下述值之一: 
ERROR_INSUFFICIENT_BUFFER,ERROR_INVALID_FLAGS,ERROR_INVALID_PARAMETER

 

5、WM_SETTINGCHANGE

     如果使用者更改了任何系统设定,则会将WM_SETTINGCHANGE消息传送给所有的应用程序。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值