WTimer.h
上传用户:dengkfang
上传日期:2008-12-30
资源大小:5233k
文件大小:3k
源码类别:

CA认证

开发平台:

Visual C++

  1. /*
  2. Module : WTimer.H
  3. Purpose: Defines the interface for an MFC wrapper class for waitable timers
  4. Created: PJN / 06-08-2000
  5. Copyright (c) 2000 - 2004 by PJ Naughter.  (Web: www.naughter.com, Email: pjna@naughter.com)
  6. All rights reserved.
  7. Copyright / Usage Details:
  8. You are allowed to include the source code in any product (commercial, shareware, freeware or otherwise) 
  9. when your product is released in binary form. You are allowed to modify the source code in any way you want 
  10. except you cannot modify the copyright details at the top of each module. If you want to distribute source 
  11. code with your application, then you are only allowed to distribute versions released by the author. This is 
  12. to maintain a single distribution point for the source code. 
  13. */
  14. /////////////////////////////// Defines ///////////////////////////////////////
  15. #ifndef __WTIMER_H__
  16. #define __WTIMER_H__
  17. //The following defines allow the code to compile without requiring the Platform SDK to be installed.
  18. #ifndef TIMER_QUERY_STATE
  19. #define TIMER_QUERY_STATE       0x0001
  20. #endif
  21. #ifndef TIMER_MODIFY_STATE
  22. #define TIMER_MODIFY_STATE      0x0002
  23. #endif
  24. #ifndef TIMER_ALL_ACCESS
  25. #define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|TIMER_QUERY_STATE|TIMER_MODIFY_STATE)
  26. #endif
  27. /////////////////////////////// Classes ///////////////////////////////////////
  28. class CWaitableTimer
  29. {
  30. public:
  31. //Constructors / Destructors
  32.   CWaitableTimer();
  33.   virtual ~CWaitableTimer();
  34. //typedefs
  35.   typedef void (COMPLETION_ROUTINE)(LPVOID, const FILETIME&);
  36.   typedef COMPLETION_ROUTINE* LPCOMPLETION_ROUTINE;
  37. //General methods
  38.   BOOL     Open(LPCTSTR pszName, BOOL bInherit = FALSE, DWORD dwAccess = TIMER_ALL_ACCESS);
  39.   BOOL     Create(BOOL bManualReset, LPCTSTR pszName = NULL, LPSECURITY_ATTRIBUTES lpTimerAttributes = NULL);
  40.   void     Close();
  41.   operator HANDLE() { return m_hTimer; };
  42.   BOOL     Attach(HANDLE hTimer);
  43.   HANDLE   Detach();
  44. //Timer specific methods
  45.   BOOL     SetOnceOffAbsolute(const SYSTEMTIME& DueTime);
  46.   BOOL     SetOnceOffRelative(DWORD dwMilliseconds);
  47.   BOOL     SetPeriodicAbsolute(const SYSTEMTIME& DueTime, DWORD dwPeriod);
  48.   BOOL     SetPeriodicRelative(DWORD dwMilliseconds, DWORD dwPeriod);
  49.   void     SetSignalWhenSuspended(BOOL bSignal) { m_bSignalWhenSuspended = bSignal; };
  50.   BOOL     Cancel();
  51.   void     SetCompletionRoutine(LPCOMPLETION_ROUTINE lpCompletionRoutine, LPVOID lpArgToCompletionRoutine = NULL) { m_lpfnCompletionRoutine = lpCompletionRoutine; m_lpArgToCompletionRoutine = lpArgToCompletionRoutine; };
  52. protected:
  53. //Methods
  54.   static VOID APIENTRY _CompletionRoutine(LPVOID lpArgToCompletionRoutine, DWORD dwTimerLowValue, DWORD dwTimerHighValue);
  55. //Member variables
  56.   HANDLE               m_hTimer;
  57.   BOOL                 m_bSignalWhenSuspended;
  58.   LPCOMPLETION_ROUTINE m_lpfnCompletionRoutine;
  59.   LPVOID               m_lpArgToCompletionRoutine;
  60. };
  61. #endif //__WTIMER_H__