Есть два монитора: вторичный слева от первичного.Разрешения:
Primary: 2560*1440 scaling 100%
Secondary: 1920*1200 scaling 150%
При запуске программы она делает EnumDisplayMonitors
, что дает следующие RECT:
Primary: 0,0,2560,1440
Secondary: -1920,0,-640,800
Также я попробовал код:
int width, height;
RECT rect = { -1920, 0, -640, 800 };
SystemParametersInfoA(SPI_SETWORKAREA, 0, &rect, 0);
width = GetSystemMetrics(SM_CXSCREEN);
height = GetSystemMetrics(SM_CYSCREEN);
, ноwidth
и height
всегда имеют размеры основного монитора.
Как определить собственное разрешение дополнительного монитора 1920*1200
или коэффициент масштабирования 150%
?
Это тоже не работает, дает 1280*800
:
BOOL CALLBACK EnumMonitorCallback(HMONITOR hMon, HDC hdc, LPRECT rect, LPARAM param)
{
MONITORINFOEXA mi;
mi.cbSize = sizeof(mi);
GetMonitorInfoA(hMon, &mi);
HDC dc = CreateDCA("DISPLAY", mi.szDevice, NULL, NULL);
int width = GetDeviceCaps(dc, HORZRES);
int height = GetDeviceCaps(dc, VERTRES);
DeleteDC(dc);
return TRUE;
}