Exemple #1
0
        protected override void WndProc(ref Message m)
        {
            if (!IsDesignMode)
            {
                switch (m.Msg)
                {
                case (int)WindowsMessages.WM_SHOWWINDOW:
                {
                    if (StartPosition == FormStartPosition.CenterParent && Owner != null)
                    {
                        Location = new Point(Owner.Location.X + Owner.Width / 2 - Width / 2,
                                             Owner.Location.Y + Owner.Height / 2 - Height / 2);
                    }
                    else if (StartPosition == FormStartPosition.CenterScreen || (StartPosition == FormStartPosition.CenterParent && Owner == null))
                    {
                        var currentScreen = Screen.FromHandle(this.Handle);
                        Location = new Point(currentScreen.WorkingArea.Left + (currentScreen.WorkingArea.Width / 2 - this.Width / 2), currentScreen.WorkingArea.Top + (currentScreen.WorkingArea.Height / 2 - this.Height / 2));
                    }

                    Activate();
                    BringToFront();

                    base.WndProc(ref m);
                }
                break;

                case (int)WindowsMessages.WM_MOVE:
                {
                    browser?.BrowserHost?.NotifyScreenInfoChanged();


                    base.WndProc(ref m);
                }
                break;

                case (int)WindowsMessages.WM_SIZE:
                {
                    var x = (int)User32.LoWord(m.LParam);
                    var y = (int)User32.HiWord(m.LParam);
                    if (browser != null && browser.IsHandleCreated)
                    {
                        var js = string.Format(JsHostWindowObject.JS_WINDOW_STATE_CHANGED, m.WParam, x, y);
                        browser.ExecuteJavascript(js);
                    }
                }
                break;

                default:
                {
                    base.WndProc(ref m);
                }
                break;
                }
            }
            else
            {
                base.WndProc(ref m);
            }
        }
Exemple #2
0
        protected override void WndProc(ref Message m)
        {
            if (!IsDesignMode)
            {
                switch (m.Msg)
                {
                case NativeMethods.WindowsMessage.WM_SHOWWINDOW:
                {
                    if (StartPosition == FormStartPosition.CenterParent && Owner != null)
                    {
                        Location = new Point(Owner.Location.X + Owner.Width / 2 - Width / 2,
                                             Owner.Location.Y + Owner.Height / 2 - Height / 2);
                    }
                    else if (StartPosition == FormStartPosition.CenterScreen || (StartPosition == FormStartPosition.CenterParent && Owner == null))
                    {
                        var currentScreen = Screen.FromHandle(this.Handle);
                        Location = new Point(currentScreen.WorkingArea.Left + (currentScreen.WorkingArea.Width / 2 - this.Width / 2), currentScreen.WorkingArea.Top + (currentScreen.WorkingArea.Height / 2 - this.Height / 2));
                    }

                    Activate();
                    BringToFront();
                    base.WndProc(ref m);
                }
                break;

                case NativeMethods.WindowsMessage.WM_NCHITTEST:
                {
                    if (m.Result == NativeMethods.FALSE && Resizable)
                    {
                        Point p   = PointToClient(new Point(NativeMethods.LoWord(m.LParam.ToInt32()), NativeMethods.HiWord(m.LParam.ToInt32())));
                        var   hit = GetDirection(p.X, p.Y);

                        SetResizeMethod(hit);

                        m.Result = (IntPtr)hit;
                    }
                    else
                    {
                        base.WndProc(ref m);
                    }
                }
                break;

                case NativeMethods.WindowsMessage.WM_SIZE:
                {
                    var msg = m.WParam.ToInt32();
                    if (msg == 0 && fullClientModePadding.HasValue)
                    {
                        Padding = fullClientModePadding.Value;
                        fullClientModePadding = null;
                    }
                    else if (msg == 2)
                    {
                        if (fullClientModePadding == null)
                        {
                            fullClientModePadding = Padding;
                        }

                        Padding = maxPadding;
                    }

                    if (browser != null && browser.IsHandleCreated)
                    {
                        var x = NativeMethods.LoWord(m.LParam.ToInt32());
                        var y = NativeMethods.HiWord(m.LParam.ToInt32());

                        var js = string.Format(JS_WINDOW_STATE_CHANGED, m.WParam, x, y);
                        browser.ExecuteJavascript(js);
                    }


                    base.WndProc(ref m);
                }

                break;

                case NativeMethods.WindowsMessage.WM_SYSCOMMAND:
                {
                    var msg = m.WParam.ToInt32();

                    if (msg == NativeMethods.SysCommand.SC_MINIMIZE || msg == NativeMethods.SysCommand.SC_MAXIMIZE)
                    {
                        if (WindowState != FormWindowState.Minimized && WindowState != FormWindowState.Maximized)
                        {
                            windowOriginalSize = ClientSize;
                        }
                    }

                    base.WndProc(ref m);
                }
                break;

                default:
                {
                    if (IsNonclientMode)
                    {
                        NonclientModeWndProc(ref m);
                    }
                    else
                    {
                        DwmModeWndProc(ref m);
                    }
                }
                break;
                }
            }
            else
            {
                base.WndProc(ref m);
            }
        }