Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengubah Saiz Borang Windows Tanpa Sempadan?
Mengendalikan saiz semula borang tanpa sempadan
Menggerakkan Borang Windows tanpa sempadan adalah mudah, tetapi mengubah saiz borang tersebut memberikan cabaran yang unik. Dengan menetapkan sifat "FormBorderStyle" kepada "Tiada", sempadan lalai hilang, menjadikan saiz semula mustahil.
Penyelesaian:
Untuk mengatasi masalah ini, gunakan kawalan yang dilukis tersuai di sudut kanan bawah borang, mensimulasikan pemegang ubah saiz. Selain itu, laksanakan kaedah "WndProc" untuk memintas mesej "WM_NCHITTEST" dan tentukan kedudukan kursor berbanding dengan borang. Jika kursor berada di dalam bar tajuk atau pemegang simulasi, nilai "m.Result" dikemas kini dengan sewajarnya.
Berikut ialah coretan kod sampel:
<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 pengubahsuaian ini, tetingkap tanpa sempadan anda kini boleh dialihkan dan diubah saiz dengan mudah.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Saiz Borang Windows Tanpa Sempadan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!