none
Como devolver as funções de um Form com borda para um sem borda? RRS feed

  • Pergunta

  • Em outras palavras é possível tirar a borda de um Form  e manter as funções de um Form normal (resize, move, ...)? Ou se não usar o WndProc ou Override para fazer isso?
    terça-feira, 14 de maio de 2019 21:11

Todas as Respostas

  • Olá boa tarde,

    Segue um exemplo em que ele mantém as funções.

            public Form1()
            {
                InitializeComponent();
                this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
                this.SetStyle(ControlStyles.ResizeRedraw, true);
            }
    
            private const int cGrip = 16;
            private const int cCaption = 32;
    
            protected override void WndProc(ref Message m)
            {
                if (m.Msg == 0x84)
                {
                    Point pos = new Point(m.LParam.ToInt32());
                    pos = this.PointToClient(pos);
                    if (pos.Y < cCaption)
                    {
                        m.Result = (IntPtr)2;
                        return;
                    }
                    if (pos.X >= this.ClientSize.Width - cGrip && pos.Y >= this.ClientSize.Height - cGrip)
                    {
                        m.Result = (IntPtr)17;
                        return;
                    }
                }
                base.WndProc(ref m);
            }

    Espero ter ajudado,

    Abraço!

    sexta-feira, 17 de maio de 2019 20:43
  • Obrigado, mas eu já faço o resize, move, ... O que eu estou falando são as ações, tipo: Arrastar a janela até a borda esquerda da tela e o programa ocupar a metade esquerda da tela, ou clicar no programa e chacoalhar fazendo os outros programas minimizarem e se fizer isso de novo eles maximizam. Como ativar esses eventos?
    domingo, 19 de maio de 2019 17:11