KLTimer.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:1k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #ifndef __KLTIMER_H__
  2. #define __KLTIMER_H__
  3. #include <Mmsystem.h>
  4. enum EKLTimerState
  5. {
  6. KLTIMER_RUNING,
  7. KLTIMER_PAUSE,
  8. KLTIMER_STOPED,
  9. };
  10. class KLTimer
  11. {
  12. public:
  13. KLTimer()
  14. {
  15. m_eState = KLTIMER_STOPED;
  16. m_tmElapsed = 0;
  17. m_tmLast = 0;
  18. }
  19. void Start()
  20. {
  21. m_tmElapsed = 0;
  22. m_tmLast = timeGetTime();
  23. m_eState = KLTIMER_RUNING;
  24. }
  25. void Pause()
  26. {
  27. if(m_eState == KLTIMER_RUNING)
  28. {
  29. m_tmElapsed += timeGetTime() - m_tmLast;
  30. m_eState = KLTIMER_PAUSE;
  31. }
  32. }
  33. void GoOn()
  34. {
  35. if(m_eState == KLTIMER_PAUSE)
  36. {
  37. m_tmLast = timeGetTime();
  38. m_eState = KLTIMER_RUNING;
  39. }
  40. }
  41. void Stop()
  42. {
  43. m_eState = KLTIMER_STOPED;
  44. }
  45. DWORD GetElapse()
  46. {
  47. if(m_eState == KLTIMER_RUNING)
  48. {
  49. return m_tmElapsed + (timeGetTime() - m_tmLast);
  50. }
  51. else if(m_eState == KLTIMER_PAUSE)
  52. {
  53. return m_tmElapsed;
  54. }
  55. else
  56. return 0;
  57. }
  58. protected:
  59. EKLTimerState m_eState; 
  60. DWORD m_tmLast;
  61. DWORD m_tmElapsed;
  62. };
  63. #endif