private static void WmGetMinMaxInfo(IntPtr hwnd, IntPtr lParam) { Base.PointCoordinate lMousePosition; GetCursorPos(out lMousePosition); IntPtr lPrimaryScreen = MonitorFromPoint(new Base.PointCoordinate(0, 0), Base.MonitorOptions.MONITOR_DEFAULTTOPRIMARY); Base.MONITORINFO lPrimaryScreenInfo = new Base.MONITORINFO(); if (GetMonitorInfo(lPrimaryScreen, lPrimaryScreenInfo) == false) { return; } IntPtr lCurrentScreen = MonitorFromPoint(lMousePosition, Base.MonitorOptions.MONITOR_DEFAULTTONEAREST); Base.MINMAXINFO lMmi = (Base.MINMAXINFO)Marshal.PtrToStructure(lParam, typeof(Base.MINMAXINFO)); if (lPrimaryScreen.Equals(lCurrentScreen) == true) { lMmi.ptMaxPosition.X = lPrimaryScreenInfo.rcWork.Left; lMmi.ptMaxPosition.Y = lPrimaryScreenInfo.rcWork.Top; lMmi.ptMaxSize.X = lPrimaryScreenInfo.rcWork.Right - lPrimaryScreenInfo.rcWork.Left; lMmi.ptMaxSize.Y = lPrimaryScreenInfo.rcWork.Bottom - lPrimaryScreenInfo.rcWork.Top; } else { lMmi.ptMaxPosition.X = lPrimaryScreenInfo.rcMonitor.Left; lMmi.ptMaxPosition.Y = lPrimaryScreenInfo.rcMonitor.Top; lMmi.ptMaxSize.X = lPrimaryScreenInfo.rcMonitor.Right - lPrimaryScreenInfo.rcMonitor.Left; lMmi.ptMaxSize.Y = lPrimaryScreenInfo.rcMonitor.Bottom - lPrimaryScreenInfo.rcMonitor.Top; } Marshal.StructureToPtr(lMmi, lParam, true); }
static extern bool GetMonitorInfo(IntPtr hMonitor, Base.MONITORINFO lpmi);