Windows C C++ - Get monitor display screen size in pixels

This code can get the screen size/resolution - works with multi-screen/monitors too - use the RefreshMonitorsMetrics() function.

long lMonitorsX, lMonitorsY;

BOOL CALLBACK MonitorEnumProc(
HMONITOR hMonitor, // handle to display monitor
HDC hdcMonitor, // handle to monitor DC
LPRECT lprcMonitor, // monitor intersection rectangle
LPARAM dwData // data
)
{
RECT Rect;
MONITORINFO mi;

mi.cbSize = sizeof( mi );
Rect = *lprcMonitor;
GetMonitorInfo( hMonitor, &mi );

//chad edit - make += instead of max because we want whole multiscreen width
lMonitorsX += mi.rcMonitor.right;
lMonitorsX--;//0 based

lMonitorsY = max( lMonitorsY, mi.rcMonitor.bottom );
lMonitorsY--;//0 based

return TRUE;
}


void RefreshMonitorsMetrics( )
{

// work out how big we have to be to cover all the screens.
lMonitorsX = 0;
lMonitorsY = 0;
EnumDisplayMonitors(
NULL, // handle to display DC 
NULL, // clipping rectangle 
MonitorEnumProc, // callback function
0 // data for callback function 
);



}


blog comments powered by Disqus

This ClearEvo.com blog is powered by Debian GNU/Linux, running lighttpd, generated using jekyll on Ubuntu.

Subscribe for new updates