62 lines
1.4 KiB
C
62 lines
1.4 KiB
C
![]() |
#ifndef UI_ANIMATION_ANIMATIONTIMER_H_
|
|||
|
#define UI_ANIMATION_ANIMATIONTIMER_H_
|
|||
|
|
|||
|
#pragma once
|
|||
|
#include "base/callback/callback.h"
|
|||
|
|
|||
|
namespace ui
|
|||
|
{
|
|||
|
|
|||
|
struct TIMERINFO
|
|||
|
{
|
|||
|
typedef std::function<void ()> TimerCallback;
|
|||
|
|
|||
|
bool operator < (const TIMERINFO& timerInfo) const {
|
|||
|
return dwTimeEnd.QuadPart > timerInfo.dwTimeEnd.QuadPart;
|
|||
|
}
|
|||
|
|
|||
|
TIMERINFO() : uPause(0), iRepeatTime(0)
|
|||
|
{
|
|||
|
dwTimeEnd.QuadPart = 0;
|
|||
|
}
|
|||
|
|
|||
|
TimerCallback timerCallback;
|
|||
|
LONGLONG uPause; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int iRepeatTime; //<2F>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
LARGE_INTEGER dwTimeEnd; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣨<EFBFBD><E4A3A8>λ1ms<6D><73>
|
|||
|
std::weak_ptr<nbase::WeakFlag> weakFlag; //<2F>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
};
|
|||
|
|
|||
|
class TimerManager
|
|||
|
{
|
|||
|
public:
|
|||
|
const static int REPEAT_FOREVER = -1;
|
|||
|
|
|||
|
static TimerManager* GetInstance();
|
|||
|
|
|||
|
bool AddCancelableTimer(const std::weak_ptr<nbase::WeakFlag>& weakFlag, const TIMERINFO::TimerCallback& callback, UINT uElapse, int iRepeatTime);
|
|||
|
|
|||
|
private:
|
|||
|
TimerManager();
|
|||
|
~TimerManager() {};
|
|||
|
TimerManager(const TimerManager&) = delete;
|
|||
|
TimerManager& operator = (const TimerManager&) = delete;
|
|||
|
|
|||
|
static LRESULT CALLBACK WndProcThunk(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);
|
|||
|
static void CALLBACK TimeCallback(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2);
|
|||
|
|
|||
|
void Poll();
|
|||
|
|
|||
|
private:
|
|||
|
static HWND m_hMessageWnd;
|
|||
|
|
|||
|
std::priority_queue<TIMERINFO> m_aTimers;
|
|||
|
LARGE_INTEGER m_timeFrequency;
|
|||
|
bool m_bMinPause;
|
|||
|
UINT m_nOldTimerId;
|
|||
|
};
|
|||
|
|
|||
|
} // namespace ui
|
|||
|
|
|||
|
#endif // UI_ANIMATION_ANIMATIONTIMER_H_
|