Обработка WndProc на панели - PullRequest
0 голосов
/ 29 июня 2018

Я делаю Windows Winform с пользовательским изменяющим размер (без рамки). Я рисую ручку изменения размера и обрабатываю некоторые сообщения в WndProc. Просто напоследок: я не знаю, что происходит внутри WndProc, я просто знаю, что он делает то, что я хочу (я вставил фрагмент кода из какого-то примера).

Теперь я хочу добавить панель, прикрепленную к нижней части моей формы. Однако, когда я делаю это, моя функциональность по изменению размера исчезает. Есть ли какой-нибудь способ восстановить эту функциональность без необходимости программировать собственный ресайзер.

Я думаю, что функциональность потеряна, потому что она обрабатывает изменение размера только в главной форме, а не в любом из ее элементов управления.

protected override void WndProc(ref Message m)
    {
        if (m.Msg == 0x84)
        {  // Trap WM_NCHITTEST
            Point pos = new Point(m.LParam.ToInt32());
            pos = this.PointToClient(pos);
            if (
                pos.X >= this.ClientSize.Width - cGrip && 
                pos.Y >= this.ClientSize.Height - cGrip)
            {
                m.Result = (IntPtr)17; // HTBOTTOMRIGHT
                return;
            }
        }
        base.WndProc(ref m);
    }

Как я уже говорил в предыдущих вопросах, я совсем не опытный программист на C #. У меня очень мало опыта, и методы, которые я использую, вероятно, могут быть безумно оптимизированы, поэтому очень хотелось бы получить подробное описание вашего ответа.

...