Maison >développement back-end >C++ >Comment redimensionner un formulaire Windows sans bordure ?
Gestion du redimensionnement des formulaires sans bordure
Déplacer un formulaire Windows sans bordure est facile, mais redimensionner un tel formulaire présente un défi unique. En définissant la propriété "FormBorderStyle" sur "Aucun", la bordure par défaut disparaît, rendant le redimensionnement impossible.
Solution :
Pour surmonter ce problème, utilisez un contrôle dessiné personnalisé dans le coin inférieur droit du formulaire, simulant une poignée de redimensionnement. De plus, implémentez la méthode « WndProc » pour intercepter le message « WM_NCHITTEST » et déterminer la position du curseur par rapport au formulaire. Si le curseur se trouve à l'intérieur de la barre de titre ou de la poignée de la simulation, la valeur "m.Result" est mise à jour en conséquence.
Voici un exemple d'extrait de code :
<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>
Avec ces modifications, votre fenêtre sans bordure peut désormais être facilement déplacée et redimensionnée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!