Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menjadikan WinForms Tanpa Sempadan Boleh Resizable?
Buat borang WinForms boleh ubah saiz tanpa sempadan
Mencipta borang tanpa sempadan dan boleh diubah saiz bukanlah mudah dalam WinForms. Walau bagaimanapun, dengan hanya beberapa pengubahsuaian, ia boleh dibuat tanpa sempadan dan boleh diubah saiz.
Untuk melumpuhkan sempadan Windows lalai, tetapkan sifat "FormBorderStyle" kepada "Tiada". Tetapi ini juga mengalih keluar keupayaan untuk mengubah saiz borang. Untuk melakukan ini, pelarasan kod diperlukan.
Contoh kod berikut mentakrifkan pengendali tersuai untuk melukis pemegang ubah saiz dan mensimulasikan bar tajuk, sambil mengatasi "WndProc" untuk mengendalikan mesej WM_NCHITTEST:
<code class="language-c#">public partial class Form1 : Form { public Form1() { InitializeComponent(); this.FormBorderStyle = FormBorderStyle.None; this.DoubleBuffered = true; this.SetStyle(ControlStyles.ResizeRedraw, true); } private const int cGrip = 16; // 手柄大小 private const int cCaption = 32; // 标题栏高度 protected override void OnPaint(PaintEventArgs e) { // 绘制手柄 Rectangle rc = new Rectangle(this.ClientSize.Width - cGrip, this.ClientSize.Height - cGrip, cGrip, cGrip); ControlPaint.DrawSizeGrip(e.Graphics, this.BackColor, rc); // 绘制标题栏 rc = new Rectangle(0, 0, this.ClientSize.Width, cCaption); e.Graphics.FillRectangle(Brushes.DarkBlue, rc); } protected override void WndProc(ref Message m) { if (m.Msg == 0x84) // 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); } }</code>
Dengan kod ini, anda boleh mencipta borang tanpa sempadan yang masih boleh diubah saiznya dengan menyeret pemegang kanan bawah dan bar tajuk simulasi.
Atas ialah kandungan terperinci Bagaimana untuk Menjadikan WinForms Tanpa Sempadan Boleh Resizable?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!