UINT TimerScanStart(LPTIMECALLBACK fptc,int TimeCycle,BOOL bTime_OneShot)
{
UINT TimeID = 0;
TIMECAPS tc;
if(::timeGetDevCaps(&tc,sizeof(TIMECAPS))==TIMERR_NOERROR)
{
DWORD wAccuracy;
wAccuracy=min(max(tc.wPeriodMin,TIMER_ACCURACY),tc.wPeriodMax);
if(timeBeginPeriod(wAccuracy) == TIMERR_NOERROR )
{
// 参数 TIME_PERIODIC: 周期执行
if(TimeCycle >= wAccuracy && TimeCycle <= tc.wPeriodMax)
{
if(bTime_OneShot)
{//只执行一次
TimeID = ::timeSetEvent(TimeCycle,wAccuracy,fptc,(DWORD)this,TIME_ONESHOT);
}
else
{//周期执行
TimeID = ::timeSetEvent(TimeCycle,wAccuracy,fptc,(DWORD)this,TIME_PERIODIC);
}
}
timeEndPeriod(wAccuracy);
}
}
return TimeID ;
}
{
UINT TimeID = 0;
TIMECAPS tc;
if(::timeGetDevCaps(&tc,sizeof(TIMECAPS))==TIMERR_NOERROR)
{
DWORD wAccuracy;
wAccuracy=min(max(tc.wPeriodMin,TIMER_ACCURACY),tc.wPeriodMax);
if(timeBeginPeriod(wAccuracy) == TIMERR_NOERROR )
{
// 参数 TIME_PERIODIC: 周期执行
if(TimeCycle >= wAccuracy && TimeCycle <= tc.wPeriodMax)
{
if(bTime_OneShot)
{//只执行一次
TimeID = ::timeSetEvent(TimeCycle,wAccuracy,fptc,(DWORD)this,TIME_ONESHOT);
}
else
{//周期执行
TimeID = ::timeSetEvent(TimeCycle,wAccuracy,fptc,(DWORD)this,TIME_PERIODIC);
}
}
timeEndPeriod(wAccuracy);
}
}
return TimeID ;
}