Cogs.Core
Monitor.Windows.cpp
1#include "Monitor.h"
2#include "Unicode.h"
3#include "../Logging/Logger.h"
4
5#include <vector>
6
7#include <Windows.h>
8
9namespace {
11}
12
13void Cogs::Monitor::enumerate() {
14 monitors.clear();
15
16 LOG_DEBUG(logger, "Enumerating monitors...");
17 EnumDisplayMonitors(nullptr, nullptr, &callback, 0);
18}
19
20BOOL Cogs::Monitor::callback(HMONITOR monitor, HDC, RECT* coords, LPARAM) {
21 monitors.push_back({});
22
23 Monitor& m = monitors.back();
24 MONITORINFOEXW info = {};
25
26 info.cbSize = sizeof(info);
27 GetMonitorInfoW(monitor, &info);
28
29 m.identifier = monitor;
30 m.name = narrow(info.szDevice);
31 m.position = glm::ivec2(coords->left, coords->top);
32 m.size = glm::ivec2(coords->right - coords->left, coords->bottom - coords->top);
33 m.primary = (info.dwFlags & MONITORINFOF_PRIMARY) ? true : false;
34
35 LOG_DEBUG(logger, "Monitor %s: %d,%d %dx%d.", m.name.c_str(), m.position.x, m.position.y, m.size.x, m.size.y);
36 return true;
37}
Log implementation class.
Definition: LogManager.h:140
constexpr Log getLogger(const char(&name)[LEN]) noexcept
Definition: LogManager.h:181