#include ThreadTimer::ThreadTimer(void) : mMinResolution(0), mIsOkay(FALSE), mHasTimedEvent(FALSE), mTimerID(0), mIsFirstBreak(TRUE) { if(::timeGetDevCaps(&mTimerCapability,sizeof(TIMECAPS)))return; mMinResolution=mTimerCapability.wPeriodMin; if(::timeBeginPeriod(mMinResolution))return; mIsOkay=TRUE; } ThreadTimer::ThreadTimer(WORD minResolution) : mMinResolution(minResolution), mIsOkay(FALSE), mHasTimedEvent(FALSE), mTimerID(0), mIsFirstBreak(TRUE) { if(::timeGetDevCaps(&mTimerCapability,sizeof(TIMECAPS)))return; if(mMinResolutionmTimerMutex.requestMutex(); if(((ThreadTimer*)dwUser)->isFirstBreak()) { ((ThreadTimer*)dwUser)->isFirstBreak(FALSE); ((ThreadTimer*)dwUser)->timerStarted(); } if(((CallbackData::ReturnType)FALSE)==((ThreadTimer*)dwUser)->mCallbackPointer.callback(callbackData)) { ((ThreadTimer*)dwUser)->timerStopped(); ((ThreadTimer*)dwUser)->stopTimer(); } ((ThreadTimer*)dwUser)->mTimerMutex.releaseMutex(); return; } // virtuals void ThreadTimer::timerStarted(void) { return; } void ThreadTimer::timerStopped(void) { return; }