soui 5.0.0.1
Soui5 Doc
 
Loading...
Searching...
No Matches
STimerGenerator.cpp
1#include "souistd.h"
2#include "helper/STimerGenerator.h"
3#include <event/SEvents.h>
4SNSBEGIN
5//////////////////////////////////////////////////////////////////////////
6// SScriptTimer
7template <>
9
11{
12 SPOSITION pos = m_mapNamedObj->GetStartPosition();
13 while (pos)
14 {
15 SMap<UINT_PTR, TIMERINFO>::CPair *p = m_mapNamedObj->GetNext(pos);
16 ::KillTimer(NULL, p->m_key);
17 }
18}
19
20VOID CALLBACK STimerGenerator::_TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
21{
22 TIMERINFO ti;
24 {
25 if (!ti.bRepeat)
26 {
27 STimerGenerator::getSingleton().ClearTimer(idEvent);
28 }
29 EventTimer evt(NULL);
30 evt.uID = (UINT)idEvent;
31 evt.uData = ti.uData;
32 ti.pEvtSlot->Run(&evt);
33 }
34 else
35 {
36 STimerGenerator::getSingleton().ClearTimer(idEvent);
37 }
38}
39
41{
42 ::KillTimer(NULL, uID);
43 RemoveKeyObject(uID);
44}
45
46UINT STimerGenerator::SetTimer(IEvtSlot *pEvtSlot, UINT nElapse, BOOL bRepeat, LPARAM uData)
47{
48 UINT_PTR uID = ::SetTimer(NULL, 0, nElapse, _TimerProc);
49 if (uID != 0)
50 {
51 TIMERINFO ti = { pEvtSlot, bRepeat, uData };
52 AddKeyObject(uID, ti);
53 }
54 return (UINT)uID;
55}
56
57SNSEND
SOUI系统中使用的事件系统
bool GetKeyObject(const SStringA &key, TObj &obj) const
Definition SCmnMap.h:65
SMap< SStringA, TObj > * m_mapNamedObj
Definition SCmnMap.h:168
bool AddKeyObject(const SStringA &key, const TObj &obj)
Definition SCmnMap.h:94
bool RemoveKeyObject(const SStringA &key)
Definition SCmnMap.h:123
static TClass & getSingleton(void)
Definition SSingleton2.h:59
static T * ms_Singleton
Static pointer to the singleton instance.
Definition SSingleton.h:35
定时器生成器类,继承自单例映射类
~STimerGenerator()
析构函数
void ClearTimer(UINT_PTR uID)
清除定时器
static VOID CALLBACK _TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
定时器回调函数
UINT SetTimer(IEvtSlot *pEvtSlot, UINT nElapse, BOOL bRepeat, LPARAM uData)
设置定时器
定时器信息结构体