#include MMTimer::MMTimer(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; } MMTimer::MMTimer(WORD minResolution) : mMinResolution(minResolution), mIsOkay(FALSE), mHasTimedEvent(FALSE), mTimerID(0), mIsFirstBreak(TRUE) { if(::timeGetDevCaps(&mTimerCapability,sizeof(TIMECAPS)))return; if(mMinResolutionisFirstBreak()) { ((MMTimer*)dwUser)->isFirstBreak(FALSE); ((MMTimer*)dwUser)->timerStarted(); } if(((CallbackData::ReturnType)FALSE)==((MMTimer*)dwUser)->mCallbackPointer.callback(callbackData)) { ((MMTimer*)dwUser)->timerStopped(); ((MMTimer*)dwUser)->stopTimer(); } return; } // virtuals void MMTimer::timerStarted(void) { return; } void MMTimer::timerStopped(void) { return; }