C # Скрыть изменение размера курсора - PullRequest
5 голосов
/ 30 мая 2009

В моей программе я использую переопределение WndProc, чтобы остановить изменение размера моей формы. Дело в том, что курсор все еще там, когда вы перемещаете указатель к краю формы. Есть ли способ скрыть этот курсор?

Ответы [ 4 ]

8 голосов
/ 30 мая 2009

Почему бы не установить вместо этого свойство FormBorderStyle соответствующим образом? Тогда вам не нужно использовать WndProc.

Вот пример кода для демонстрации - нажмите кнопку, чтобы переключиться, можно ли изменить размер формы:

using System;
using System.Windows.Forms;
using System.Drawing;

class Test
{   
    [STAThread]
    static void Main(string[] args)
    {
        Button button = new Button 
        {
            Text = "Toggle border",
            AutoSize = true,
            Location = new Point(20, 20)
        };
        Form form = new Form
        {
            Size = new Size (200, 200),
            Controls = { button },
            FormBorderStyle = FormBorderStyle.Fixed3D
        };
        button.Click += ToggleBorder;
        Application.Run(form);
    }

    static void ToggleBorder(object sender, EventArgs e)
    {
        Form form = ((Control)sender).FindForm();
        form.FormBorderStyle = form.FormBorderStyle == FormBorderStyle.Fixed3D
            ? FormBorderStyle.Sizable : FormBorderStyle.Fixed3D;
    }
}
7 голосов
/ 30 мая 2009

Я нашел способ использовать WndProc благодаря ссылке, которую мне прислала Лассе. Спасибо за твой ответ, Джон, но это было не совсем то, что я хотел. Для тех, кто хочет знать, как я это сделал, я использовал это:

    protected override void WndProc(ref Message m)
    {
        const int WM_NCHITTEST = 0x0084;

        switch (m.Msg)
        {
            case WM_NCHITTEST:
                return;
        }

        base.WndProc(ref m);
    }

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

0 голосов
/ 13 марта 2010

@ Оззи / Лассе Работал на меня!

Была такая же проблема:

Стандартные стили границ не дают желаемого вида, а пользовательские CreateParams. Я указал одинаковые значения для Size, MinimumSize и MaximumSize, чтобы отключить изменение размера. Курсоры изменения размера все еще устанавливались, хотя, благодаря Ozzy & Lasse, это теперь обрабатывается фильтрацией WM_NCHITTEST ...

Спасибо

0 голосов
/ 30 мая 2009

Для этого достаточно просто установить FormBorderStyle. Почему вы используете WndProc для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...