Author: janderwald Date: Tue May 20 10:20:28 2008 New Revision: 33613
URL: http://svn.reactos.org/svn/reactos?rev=33613&view=rev Log: - monitor device name start with "\.\DISPLAY<number>" than with "\??\DISPLAY<number>" - implement handling MONITOR_DEFAULTTOPRIMARY in IntGetMonitorsFromRect - implement handling MONITOR_DEFAULTTONULL in NtUserMonitorFromWIndow - ReactOS now passes all user32_winetest monitor tests
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/monitor.c
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/monitor.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntu... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/monitor.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/monitor.c [iso-8859-1] Tue May 20 10:20:28 2008 @@ -174,7 +174,7 @@ return STATUS_INSUFFICIENT_RESOURCES; }
- _snwprintf(Buffer, CCHDEVICENAME, L"\??\DISPLAY%d", DisplayNumber + 1); + _snwprintf(Buffer, CCHDEVICENAME, L"\\.\DISPLAY%d", DisplayNumber + 1); if (!RtlCreateUnicodeString(&Monitor->DeviceName, Buffer)) { DPRINT("Couldn't duplicate monitor name!\n"); @@ -322,7 +322,7 @@ OPTIONAL IN DWORD listSize, OPTIONAL IN DWORD flags) { - PMONITOR_OBJECT Monitor, NearestMonitor = NULL; + PMONITOR_OBJECT Monitor, NearestMonitor = NULL, PrimaryMonitor = NULL; UINT iCount = 0; LONG iNearestDistanceX = 0x7fffffff, iNearestDistanceY = 0x7fffffff;
@@ -384,6 +384,11 @@ IntersectionRect = MonitorRect; }
+ if (flags == MONITOR_DEFAULTTOPRIMARY && Monitor->IsPrimary) + { + PrimaryMonitor = Monitor; + } + if (iCount < listSize) { if (hMonitorList != NULL) @@ -403,7 +408,15 @@ } iCount++; } - + else if (iCount == 0 && flags == MONITOR_DEFAULTTOPRIMARY) + { + if (iCount < listSize) + { + if (hMonitorList != NULL) + hMonitorList[iCount] = PrimaryMonitor->Handle; + } + iCount++; + } return iCount; }
@@ -878,7 +891,12 @@
if (!(Window = UserGetWindowObject(hWnd))) { - RETURN(NULL); + if (dwFlags == MONITOR_DEFAULTTONULL) + { + RETURN(hMonitor); + } + IntGetMonitorsFromRect(NULL, &hMonitor, NULL, 1, dwFlags); + RETURN(hMonitor); }
Rect.left = Rect.right = Window->Wnd->WindowRect.left;