Example #1
0
        public static void Initialize()
        {
            m_staticRECT = new WinApi.RECT(0, 0, 0, 0);

            List <WinApi.MONITORINFO> listMONITORINFO = new List <WinApi.MONITORINFO>();

            WinApi.MonitorEnumDelegate callback = (IntPtr hDesktop, IntPtr hdc, ref WinApi.RECT pRect, int d) =>
            {
                var varInfo = new WinApi.MONITORINFO();

                varInfo.cbSize = sizeof(int) * 4 * 2 + sizeof(int) * 2;

                if (WinApi.GetMonitorInfo(hDesktop, ref varInfo) == false)
                {
                    return(false);
                }

                var varMONITORINFO = varInfo.rcMonitor;

                if (varMONITORINFO.Left < m_staticRECT.Left)
                {
                    m_staticRECT.Left = varMONITORINFO.Left;
                }

                if (varMONITORINFO.Top < m_staticRECT.Top)
                {
                    m_staticRECT.Top = varMONITORINFO.Top;
                }

                if (varMONITORINFO.Right > m_staticRECT.Right)
                {
                    varMONITORINFO.Right = m_staticRECT.Right;
                }

                if (varMONITORINFO.Bottom > m_staticRECT.Bottom)
                {
                    varMONITORINFO.Bottom = m_staticRECT.Bottom;
                }

                listMONITORINFO.Add(varInfo);

                return(true);
            };

            if (WinApi.EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero, callback, 0))
            {
                g_staticMONITORINFO = listMONITORINFO.ToArray();
            }
            else
            {
                g_staticMONITORINFO = new[]
                {
                    new WinApi.MONITORINFO()
                    {
                        rcMonitor = Screen.PrimaryScreen.Bounds,
                        rcWork    = Screen.PrimaryScreen.WorkingArea,
                    }
                };
            }
        }
Example #2
0
        //#################################################################################################################

        public static void Initialize()
        {
            s_combinedRect = new WinApi.RECT(0, 0, 0, 0);

            List <WinApi.MONITORINFO> screens = new List <WinApi.MONITORINFO>();

            WinApi.MonitorEnumDelegate callback = (IntPtr hDesktop, IntPtr hdc, ref WinApi.RECT pRect, int d) =>
            {
                var info = new WinApi.MONITORINFO();
                info.cbSize = sizeof(int) * 4 * 2 + sizeof(int) * 2;
                if (WinApi.GetMonitorInfo(hDesktop, ref info) == false)
                {
                    return(false);
                }

                var rect = info.rcMonitor;
                if (rect.Left < s_combinedRect.Left)
                {
                    s_combinedRect.Left = rect.Left;
                }
                if (rect.Top < s_combinedRect.Top)
                {
                    s_combinedRect.Top = rect.Top;
                }
                if (rect.Right > s_combinedRect.Right)
                {
                    rect.Right = s_combinedRect.Right;
                }
                if (rect.Bottom > s_combinedRect.Bottom)
                {
                    rect.Bottom = s_combinedRect.Bottom;
                }

                screens.Add(info);

                return(true);
            };

            if (WinApi.EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero, callback, 0))
            {
                Screens = screens.ToArray();
            }
            else
            {
                Screens = new[]
                {
                    new WinApi.MONITORINFO()
                    {
                        rcMonitor = Screen.PrimaryScreen.Bounds,
                        rcWork    = Screen.PrimaryScreen.WorkingArea,
                    }
                };
            }
        }