diff options
author | Rr42 | 2018-06-25 17:43:13 +0530 |
---|---|---|
committer | Rr42 | 2018-06-25 17:43:13 +0530 |
commit | 81498daf0fa6f0004a322030acca6001f27a20e1 (patch) | |
tree | b689544dcd140a7100d10fe5ced1bc50905a4e23 /ldmicro/lib/linuxUI | |
parent | 8bad98abfaf76db07f77bc89366ab5572e724654 (diff) | |
download | LDMicroGtk-81498daf0fa6f0004a322030acca6001f27a20e1.tar.gz LDMicroGtk-81498daf0fa6f0004a322030acca6001f27a20e1.tar.bz2 LDMicroGtk-81498daf0fa6f0004a322030acca6001f27a20e1.zip |
Added full timer functionality and partial simulation functionality.
Diffstat (limited to 'ldmicro/lib/linuxUI')
-rw-r--r-- | ldmicro/lib/linuxUI/linuxUI.cpp | 33 | ||||
-rw-r--r-- | ldmicro/lib/linuxUI/linuxUI.h | 17 |
2 files changed, 50 insertions, 0 deletions
diff --git a/ldmicro/lib/linuxUI/linuxUI.cpp b/ldmicro/lib/linuxUI/linuxUI.cpp index c3c7c0d..5a7b799 100644 --- a/ldmicro/lib/linuxUI/linuxUI.cpp +++ b/ldmicro/lib/linuxUI/linuxUI.cpp @@ -10,6 +10,9 @@ const COLORREF DKGRAY_BR(169, 169, 169); /// Variable to current text color COLORREF HdcCurrentTextColor; +/// Variable to hold timers +std::vector<TimerRecord> timerRecords; + /// EnableMenuItem Variables const UINT MF_ENABLED = 0; const UINT MF_GRAYED = 1; @@ -470,4 +473,34 @@ BOOL GetWindowRect(HWID hWid, PRECT pRect) pRect->bottom = allocation.height; return TRUE; +} + +UINT SetTimer(HWID hWid, UINT nIDEvent, UINT uElapse, BOOL (*lpTimerFunc)(BOOL) ) +{ + auto record_it = std::find_if(timerRecords.begin(), timerRecords.end(), [&nIDEvent](TimerRecord &Record) { return Record.ufID == nIDEvent; }); + + if (record_it != timerRecords.end()) + return 0; + + TimerRecord tr; + tr.pfun = lpTimerFunc; + tr.ufID = nIDEvent; + tr.utID = g_timeout_add(uElapse, (GSourceFunc)lpTimerFunc, FALSE); + + timerRecords.push_back(tr); + return tr.utID; +} + +BOOL KillTimer(HWID hWid, UINT uIDEvent) +{ + auto record_it = std::find_if(timerRecords.begin(), timerRecords.end(), [&uIDEvent](TimerRecord &Record) { return Record.ufID == uIDEvent; }); + + if (record_it == timerRecords.end()) + return FALSE; + + record_it->pfun(TRUE); + g_source_remove (record_it->utID); + timerRecords.erase(record_it); + + return TRUE; }
\ No newline at end of file diff --git a/ldmicro/lib/linuxUI/linuxUI.h b/ldmicro/lib/linuxUI/linuxUI.h index e970e42..09fb488 100644 --- a/ldmicro/lib/linuxUI/linuxUI.h +++ b/ldmicro/lib/linuxUI/linuxUI.h @@ -100,8 +100,15 @@ typedef struct OpenFileInfoData { LPCTSTR lpstrDefExt; } OPENFILENAME; +typedef struct TimerRecordTag { + BOOL (*pfun)(BOOL); + UINT ufID; + UINT utID; +} TimerRecord; + /// Variables extern COLORREF HdcCurrentTextColor; +extern std::vector<TimerRecord> timerRecords; /// functions BOOL GetFocus(HWID window); @@ -201,4 +208,14 @@ BOOL GetWindowRect( HWID hWid, PRECT pRect); +UINT SetTimer( + HWID hWid, + UINT nIDEvent, + UINT uElapse, + BOOL (*lpTimerFunc)(BOOL)); + +BOOL KillTimer( + HWID hWid, + UINT uIDEvent); + #endif
\ No newline at end of file |