3 // CTimer:
\94Ä
\97p
\83^
\83C
\83}
4 //
\95\81\92i
\82Í CTimerEx
\82ð
\8eg
\82¤
\82×
\82µ
\81B
9 #define INIT_TIME (-1.0)
11 #define TIMERTYPE_PERFORMANCECOUNTER 0 //
\8d\82\90¸
\93x
\83^
\83C
\83}
12 #define TIMERTYPE_TIMEGTTIME 1 //
\83}
\83\8b\83`
\83\81\83f
\83B
\83A
\83^
\83C
\83}
13 #define TIMERTYPE_GETTICKCOUNT 2 //
\8b\8c\8e®
\83^
\83C
\83}
14 #define TIMERTYPE_UNKNOWN 99 //
\95s
\92è
21 void Init( int timerType=TIMERTYPE_UNKNOWN ); //
\8f\89\8aú
\89»
22 void Term(); //
\8fI
\97¹
\8f\88\97\9d
23 void Reset(); //
\83^
\83C
\83}
\82ð
\83\8a\83Z
\83b
\83g
\82·
\82é
\81BPAUSE
\82Í
\82·
\82×
\82Ä
\89ð
\8f\9c\82³
\82ê
\82é
\81B
24 double Get(); //
\8c»
\8dÝ
\8e\9e\8d\8f\82Ì
\8eæ
\93¾
\81BPAUSE
\92\86\82È
\82çPAUSE
\8e\9e\93_
\82Ì
\8e\9e\8d\8f\82ª
\95Ô
\82³
\82ê
\82é
\81B
25 void Set( double dbTime ); //
\8c»
\8dÝ
\8e\9e\8d\8f\82Ì
\90Ý
\92è
\81BPAUSE
\92\86\82È
\82çPAUSE
\8e\9e\93_
\82Ì
\8e\9e\8d\8f\82à
\95Ï
\8dX
\82³
\82ê
\82é
\81B
26 void Pause(); //
\88ê
\8e\9e\92â
\8e~
\81B
27 void Restart(); //
\88ê
\8e\9e\92â
\8e~
\8cã
\82Ì
\8dÄ
\8aJ
\81B
28 double GetSysTime() {return GetTime();} //
\90â
\91Î
\8e\9e\8d\8f\81i
\83V
\83X
\83e
\83\80\8bN
\93®
\8cã
\82©
\82ç
\82Ì
\8co
\89ß
\8e\9e\8d\8f\81j
\82ð
\95Ô
\82·
\81B
29 int GetTimerType() { return timerType; }
35 double dbOffsetTime; //
\83I
\83t
\83Z
\83b
\83g
\92l
36 double dbPauseTime; // Pause
\82©
\82¯
\82½
\82Æ
\82«
\82ÌTime
37 int nPaused; // pause
\92\86\82È
\82ç0
\82æ
\82è
\91å
\82«
\82¢
\90\94
38 UINT uTimerID; //
\83^
\83C
\83}
\8a\84\82è
\8d\9e\82ÝID
41 static int nRefCount; //
\8eQ
\8fÆ
\89ñ
\90\94
42 static int timerType; //
\8ed
\97l
\82·
\82é
\83^
\83C
\83}
43 static TIMECAPS dwTimeCaps; // timeGetTime
\97p
44 static LARGE_INTEGER liFrequency; //
\8d\82\90¸
\93x
\83^
\83C
\83}
\82Ì
\89ð
\91\9c\93x
47 //
\83V
\83X
\83e
\83\80\8bN
\93®
\8cã
\82Ì
\8co
\89ß
\8e\9e\8aÔ
\82ð
\83~
\83\8a\95b
\82Å
\95Ô
\82·
\81B
48 static double GetTime();
50 //
\8d\82\90¸
\93x
\83^
\83C
\83}
\82Ì
\8eg
\97p
\89Â
\94Û
\82ð
\8am
\94F
\82µ
\81A
\8eg
\82¦
\82é
\82È
\82ç
\90Ý
\92è
\82·
\82é
\81B
51 //
\8eg
\82¦
\82é
\82È
\82ç true
\81A
\8eg
\82¦
\82È
\82¢
\82È
\82ç false
\82ð
\95Ô
\82·
\81B
52 static bool CheckAndSetA_HighPerformanceTimer();
54 //
\83}
\83\8b\83`
\83\81\83f
\83B
\83A
\83^
\83C
\83}
\82Ì
\8eg
\97p
\89Â
\94Û
\82ð
\8am
\94F
\82µ
\81A
\8eg
\82¦
\82é
\82È
\82ç
\90Ý
\92è
\82·
\82é
\81B
55 //
\8eg
\82¦
\82é
\82È
\82ç true
\81A
\8eg
\82¦
\82È
\82¢
\82È
\82ç false
\82ð
\95Ô
\82·
\81B
56 static bool CheckAndSetB_MultimediaTimer();
58 //
\8b\8c\8e®
\83^
\83C
\83}
\82Ì
\90Ý
\92è
\82ð
\8ds
\82¤
\81B
59 //
\8fí
\82É true
\82ð
\95Ô
\82·
\81B
60 static bool SetC_OldTimer();
63 /////////////////////////////
65 // (1) Reset(), Set(time)
\82©
\82ç
\82Ì
\8co
\89ß
\8e\9e\8aÔ(ms)
\82ð Get()
\82Å
\8eæ
\93¾
\81B
66 // (2) Flush()
\82ð
\8cÄ
\82Î
\82È
\82¢
\8cÀ
\82è
\8e\9e\8d\8f\82Í
\8dX
\90V
\82³
\82ê
\82È
\82¢
\81B
67 // (3) Set(time)
\82Å
\8e\9e\8d\8f\82ð
\90Ý
\92è
\82Å
\82«
\82é
\81B
68 // (4) Pause(), Restart()
\82Å
\88ê
\8e\9e\92â
\8e~
\81E
\89ð
\8f\9c\82ª
\82Å
\82«
\82é
\81B
69 // (5) GetSysTime()
\82Å
\90â
\91Î
\8e\9e\8d\8f\82ð
\8eæ
\93¾
\82Å
\82«
\82é
\81B
70 // (6) SetTimer(proc), KillTimer()
\82Å
\83^
\83C
\83}
\8a\84\82è
\8d\9e\82Ý
\82Ì
\90Ý
\92è
\82Æ
\89ð
\8f\9c\82ª
\82Å
\82«
\82é
\81B
71 class CTimerEx : public CTimer
74 void Init( int timerType=TIMERTYPE_UNKNOWN )
75 {CTimer::Init(timerType); Reset();}
76 void Reset() {Flush();dbOffsetTime=dbPauseTime=dbTimeGetTime;nPaused=0;}
77 double Get() {return (nPaused>0)? dbPauseTime-dbOffsetTime : dbTimeGetTime-dbOffsetTime;}
78 double GetReal() {return CTimer::Get();}
79 void Set( double dbTime ) {if(nPaused>0){dbOffsetTime=dbPauseTime-dbTime;}else{dbOffsetTime=dbTimeGetTime-dbTime;}}
80 void Pause() {if(nPaused++ == 0){dbPauseTime=dbTimeGetTime;}}
81 void Restart() {if(--nPaused == 0){dbOffsetTime+=dbTimeGetTime-dbPauseTime;}}
83 void Flush() {dbTimeGetTime=CTimer::GetTime();}
84 double db
\91O
\89ñReset
\82µ
\82½
\8e\9e\8d\8f() {return dbOffsetTime;}
87 double dbTimeGetTime; //
\91O
\89ñFlush
\82µ
\82½
\8e\9e\8d\8f
93 using namespace FDK::General;