|
main中
_2nDs_Timer timer(1);
int time;
while (running)
{
time = timer.GetTime();
timer.WaitTime(16);
int intime = timer.GetTime() - time;
printf("time_delta : %d\n", intime);
}
定时器类
2nDs_Timer.h
#ifndef _2nDs_TIMER_H_
#define _2nDs_TIMER_H_
#include <windows.h>
class _2nDs_Timer
{
private:
HANDLE hTimer;
public:
_2nDs_Timer(BOOL bInit = FALSE);
~_2nDs_Timer(void);
int CreateTimer(void); // 返回负数表示创建失败
int DeleteTimer(int IId);
BOOL IsExist(void);
BOOL WaitTime(int Itime); // 毫秒
int GetTime(void) {return (int)GetTickCount();}//毫秒
};
#endif
2nDs_Timer.cpp
#include "2nDs_Timer.h"
#if (defined _WIN32) || (defined _WIN64)
_2nDs_Timer::_2nDs_Timer(BOOL bInit)
{
if (FALSE == bInit) hTimer = 0;
else hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
}
_2nDs_Timer::~_2nDs_Timer(void)
{
if (hTimer) CloseHandle(hTimer);
}
int _2nDs_Timer::CreateTimer(void)
{
if (hTimer) return -3;
hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
if (NULL == hTimer) return -1;
return (int)hTimer;
}
int _2nDs_Timer: eleteTimer(int IId)
{
if (NULL == hTimer) return -1;
if (FALSE == CloseHandle(hTimer)) return -2;
hTimer = 0;
return 1;
}
BOOL _2nDs_Timer::IsExist(void)
{
return (int)hTimer;
}
BOOL _2nDs_Timer::WaitTime(int Itime)
{
if (NULL == hTimer) return -1;
return (BOOL)WaitForSingleObject(hTimer, (DWORD)Itime);
}
#endif
不停显示time_delta : %d
数字显示 15,16倒是正常,但是间或的显示 31,32.。这是为啥呢?定时器也不准??
 |
|