From fc57e07cbf4f40cecc8c12f5c616fa542333a8f6 Mon Sep 17 00:00:00 2001 From: Matthias Melcher Date: Wed, 10 May 2006 10:37:32 +0000 Subject: STR #1153: This is an attempt to fix the described issues when querying multiple monitors on defferntly set up Windows environments. Would the posters please test if the new version works. Thanks. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5094 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/screen_xywh.cxx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/screen_xywh.cxx b/src/screen_xywh.cxx index f8ca76970..ede0f5969 100644 --- a/src/screen_xywh.cxx +++ b/src/screen_xywh.cxx @@ -41,25 +41,25 @@ static int num_screens = 0; # endif // !HMONITOR_DECLARED && _WIN32_WINNT < 0x0500 // BOOL EnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM) -typedef BOOL (*fl_edm_func)(HDC, LPCRECT, MONITORENUMPROC, LPARAM); +typedef BOOL (WINAPI* fl_edm_func)(HDC, LPCRECT, MONITORENUMPROC, LPARAM); // BOOL GetMonitorInfo(HMONITOR, LPMONITORINFO) -typedef BOOL (*fl_gmi_func)(HMONITOR, LPMONITORINFO); +typedef BOOL (WINAPI* fl_gmi_func)(HMONITOR, LPMONITORINFO); static fl_gmi_func fl_gmi = NULL; // used to get a proc pointer for GetMonitorInfoA static RECT screens[16]; -static BOOL CALLBACK screen_cb(HMONITOR mon, HDC, LPRECT, LPARAM) { +static BOOL CALLBACK screen_cb(HMONITOR mon, HDC, LPRECT r, LPARAM) { if (num_screens >= 16) return TRUE; MONITORINFO mi; mi.cbSize = sizeof(mi); // GetMonitorInfo(mon, &mi); - fl_gmi(mon, &mi); - - screens[num_screens] = mi.rcWork; - num_screens ++; + if (fl_gmi(mon, &mi)) { + screens[num_screens] = mi.rcWork; + num_screens ++; + } return TRUE; } -- cgit v1.2.3