Browse Source

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
pull/168/head
Matthias Melcher 19 years ago
parent
commit
fc57e07cbf
  1. 1
      CHANGES
  2. 14
      src/screen_xywh.cxx

1
CHANGES

@ -1,5 +1,6 @@
CHANGES IN FLTK 1.1.8 CHANGES IN FLTK 1.1.8
- Attempt to fix multi monitor issues (STR #1153)
- Fixed warnings when compiling w/Cygwin (STR #1152) - Fixed warnings when compiling w/Cygwin (STR #1152)
- Fixed missing reset of flag in FLUID (STR #1187) - Fixed missing reset of flag in FLUID (STR #1187)
- Fixed maximizing in OS X (STR #1221) - Fixed maximizing in OS X (STR #1221)

14
src/screen_xywh.cxx

@ -41,25 +41,25 @@ static int num_screens = 0;
# endif // !HMONITOR_DECLARED && _WIN32_WINNT < 0x0500 # endif // !HMONITOR_DECLARED && _WIN32_WINNT < 0x0500
// BOOL EnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM) // 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) // 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 fl_gmi_func fl_gmi = NULL; // used to get a proc pointer for GetMonitorInfoA
static RECT screens[16]; 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; if (num_screens >= 16) return TRUE;
MONITORINFO mi; MONITORINFO mi;
mi.cbSize = sizeof(mi); mi.cbSize = sizeof(mi);
// GetMonitorInfo(mon, &mi); // GetMonitorInfo(mon, &mi);
fl_gmi(mon, &mi); if (fl_gmi(mon, &mi)) {
screens[num_screens] = mi.rcWork;
screens[num_screens] = mi.rcWork; num_screens ++;
num_screens ++; }
return TRUE; return TRUE;
} }

Loading…
Cancel
Save