Add a RAII wrapper around SetTimer()

This commit is contained in:
Robbert van der Helm
2020-05-28 15:27:35 +02:00
parent 10cc871798
commit 00bcdf8fca
4 changed files with 60 additions and 8 deletions
+25
View File
@@ -17,3 +17,28 @@
#include "utils.h"
Win32Thread::Win32Thread() : handle(nullptr, nullptr) {}
Win32Timer::Win32Timer(HWND window_handle,
size_t timer_id,
unsigned int interval_ms)
: window_handle(window_handle), timer_id(timer_id) {
SetTimer(window_handle, timer_id, interval_ms, nullptr);
}
Win32Timer::~Win32Timer() {
if (timer_id.has_value()) {
KillTimer(window_handle, timer_id.value());
}
}
Win32Timer::Win32Timer(Win32Timer&& o) {
timer_id = o.timer_id;
o.timer_id = std::nullopt;
}
Win32Timer& Win32Timer::operator=(Win32Timer&& o) {
timer_id = o.timer_id;
o.timer_id = std::nullopt;
return *this;
}