최종완료보고 버전

This commit is contained in:
CodeTempla
2026-05-20 03:08:08 +09:00
commit 10d255ed51
548 changed files with 435582 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
#ifndef TIMER__H_
#define TIMER__H_
#ifdef _WIN32
#pragma once
#endif
#include <list>
#define HTIMER_INTERVAL_TIME 100 // 100 ms
#define HTIMER_TERMINATE_WAIT_TIME 300 // 300 ms
#define HTIMER() (&g_timerGlobal)
#define ON_TIMER(CLASS_NAME, FN_CALLBACK) \
inline bool SetTimer(unsigned int nTimerID, unsigned int nElapse) { return HTIMER()->SetTimer(nTimerID, nElapse, TimerCallBack##FN_CALLBACK, this); } \
inline bool KillTimer(unsigned int nTimerID) { return HTIMER()->KillTimer(nTimerID); } \
static void TimerCallBack##FN_CALLBACK(unsigned int nTimerID, void * pParam) { static_cast<CLASS_NAME *>(pParam)->FN_CALLBACK(nTimerID); } \
void FN_CALLBACK(unsigned int nTimerID);
struct HTimerObject
{
unsigned int nTimerID;
unsigned int nElapse;
unsigned int dwLastCheckTime;
bool bDelete;
void (*fnOnTimerCallBack)(unsigned int, void *);
void * pOnTimerCallBackParam;
};
typedef std::list<struct HTimerObject *> LIST_TIMER_OBJECT;
class HTimer : public HThread
{
public:
HTimer();
~HTimer();
inline void Terminate() { m_bTerminate = true; Sleep(HTIMER_TERMINATE_WAIT_TIME); }
void GetSystemTime(PSYSTEMTIME pSystemTime);
inline unsigned int GetTickCount() { return m_nTickCount; }
LIST_TIMER_OBJECT * GetTimerList() { return &m_listTimer; }
bool SetTimer(unsigned int nTimerID, unsigned int nElapse, void (*fnCallBack)(unsigned int, void *), void * pParam);
bool KillTimer(unsigned int nTimerID);
void RemoveAllTimer();
protected:
void Main();
private:
volatile bool m_bThreadStarted;
volatile bool m_bTerminate;
#ifndef SINGLE_THREADED_MODEL
HSyncObject m_sync;
HSyncObject m_syncSystemTime;
#endif
volatile SYSTEMTIME m_systemTime;
volatile DWORD m_nTickCount;
LIST_TIMER_OBJECT m_listTimer;
};
extern HTimer g_timerGlobal;
#endif // TIMER__H_