Esempio n. 1
0
 public ProgressBar()
 {
     this.DoubleBuffered = true;
     InitializeComponent();
     //SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
     numSteps     = 20;
     estTotalTime = 0;
     stepTimes    = new int[numSteps];
     stepColors   = new int[numSteps];
     progressBars = new List <ProgressElement>();
     // generate progress elements = numSteps
     ResetProgress();
     OverlayRectangle.BringToFront();
 }
        private void DragImage_OnMouseMove(object sender, MouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                // Get the control under the mouse
                var point  = System.Windows.Forms.Cursor.Position;
                var window = Win32.WindowFromPoint(point);

                // Go down the parents
                IntPtr parent;
                while ((parent = Win32.GetParent(window)) != IntPtr.Zero)
                {
                    window = parent;
                }

                // Check for itself
                var selfHandle = new WindowInteropHelper(GetWindow(this)).Handle;
                if (selfHandle == window)
                {
                    // Don't use itself
                    window = IntPtr.Zero;
                }

                Win32.GetWindowRect(window, out var rect);
                var rectangle = new Rectangle(rect.Left, rect.Top, rect.Right - rect.Left, rect.Bottom - rect.Top);

                if (_lastWindowHandle == IntPtr.Zero)
                {
                    _lastOverlay = new OverlayRectangle(rectangle);
                }
                else if (window != _lastWindowHandle)
                {
                    _lastOverlay.Dispose();
                    if (window != IntPtr.Zero)
                    {
                        _lastOverlay = new OverlayRectangle(rectangle);
                    }
                }

                _lastWindowHandle = window;
            }
        }