Как обработать процесс калибровки wndproc в форме, чтобы выполнить настройку, не влияя на поведение - PullRequest
1 голос
/ 24 июня 2019

Я занимаюсь разработкой пользовательской формы, которая предоставляет больше возможностей для настройки внешнего вида формы. Я переопределил wndproc и вычислил размер формы в методе calcsize (), получая сообщение 131 в wndproc. Я сделал вычисления, чтобы настроить высоту заголовка в calcsize (). Пожалуйста, обратитесь к следующему коду ниже. Проблема заключается в том, что при открытии формы с помощью borderstyle sizeablewindowtool в окнах 10 и 8 форма перемещается внутри панели задач (это поведение формы msdn). Но проблема в том, что когда я открываю форму в windows 7, форма переходит в панель задач. Я проверил с помощью формы msdn, что она не переходит в панель задач для windows 7. Пожалуйста, помогите мне найти мой ошибка.

  /// <summary>
        /// Calculates the non client area of the form
        /// </summary>
        /// <param name="m">reference message</param>
        /// <returns>retruns true if the method returns combiantion of values
        /// returns false if the method return zero</returns>
        private bool OnWmNcCalcSize(ref Message m)
        {
            NativeMethods.RECT rc = (NativeMethods.RECT)m.GetLParam(typeof(NativeMethods.RECT));

            int iBorderWidth = fl.BorderWidth;

                fl.PerformLayout(rc.Width, rc.Height);
                rc.top += fl.CaptionHeight;
                if (this.WindowState == FormWindowState.Maximized)
                {
                    ///<summary>
                    /// local variable to store x-coordinate of native rectangle,rc.left is -6 when we double click on title-bar and -8 when we click the maximize button.
                    ///</summary>
                    int xcoordinate = rc.left;
                    rc.left -= xcoordinate;
                    rc.right += xcoordinate;
                    rc.bottom += xcoordinate;
                }
                else
                {
                    rc.left += iBorderWidth - (iBorderWidth / 3);
                    rc.right -= iBorderWidth - (iBorderWidth / 3);
                    rc.bottom -= iBorderWidth - (iBorderWidth / 3);
                }

                Marshal.StructureToPtr(rc, m.LParam, true);
            m.Result = IntPtr.Zero;
            return true;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...