Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Нестандартные формы,перерисовка при перетаскивании


Автор: Leksey 10.12.2006, 16:41
Проблема заключаеться в том что при перетаскивании - форма заставляет за ссобой след(который быстро исчезает, но все равно не приятно).
При перетаскивании окна по десктопу следа почти не видно, а вот по другим окнам заметно.
Собственно вопрос есть ли какие-нибудь способы сделать так чтобы этих "разводов" было как можно меньше?
Конечно полностью от них избавиться нельзя(поперетаскивайте студию поверх другой). Хотя в Windows есть флаг - не отображать содержимое окна при перетаскивании. Вот если бы можно было как-нибудь включить его только для одного конкретного приложения....

Кстати вот такой пример перетаскивания показывает более лучшие результаты чем ручное перемещение при обработке MouseMove и MouseDown:
Код

        const int HTCLOSE = 20;
        const int WM_NCHITTEST = 0x0084;
            if (m.Msg == WM_NCHITTEST && false)
            {
                Point mouseLocation = new Point(LoWord(m.LParam.ToInt32()), HiWord(m.LParam.ToInt32()));
                mouseLocation.Offset(-this.Location.X, -this.Location.Y);
                ContainsState state = caption.Contains(mouseLocation);
                switch(state)
                {
                    case ContainsState.Caption:
                        m.Result = (IntPtr)HTCAPTION;
                        return;
                }
            }

Автор: mr.DUDA 10.12.2006, 23:03
Как вариант - при передвижении окна, каждый раз проверять над какими окнами оно находится и посылать им сообщение WM_PAINT (aka винапишная ф-ция RedrawWindow). Но это долго и нудно  smile

Автор: Leksey 12.12.2006, 00:25
угу... долго. Неохота так делать.
Надо свое GUI на DirectX smile и таких проблем не будет...

Автор: mr.DUDA 12.12.2006, 00:27
Leksey, ну не знаю, например у меня и на .NET неплохо получается: берём в руки GDI+ и UserControl и погнали smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)