summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2006-05-10 10:37:32 +0000
committerMatthias Melcher <fltk@matthiasm.com>2006-05-10 10:37:32 +0000
commitfc57e07cbf4f40cecc8c12f5c616fa542333a8f6 (patch)
tree67a6042c858756d3d726b7563ecf4b6283745f14
parent65031137c5eb555891e33dc2a93334cabf7440e1 (diff)
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
-rw-r--r--CHANGES1
-rw-r--r--src/screen_xywh.cxx14
2 files changed, 8 insertions, 7 deletions
diff --git a/CHANGES b/CHANGES
index eaa67d6d6..93be4b865 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,6 @@
CHANGES IN FLTK 1.1.8
+ - Attempt to fix multi monitor issues (STR #1153)
- Fixed warnings when compiling w/Cygwin (STR #1152)
- Fixed missing reset of flag in FLUID (STR #1187)
- Fixed maximizing in OS X (STR #1221)
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;
}