ホームページ > バックエンド開発 > C++ > Windows フォームでサイズ変更可能なボーダレス フォームを作成する方法

Windows フォームでサイズ変更可能なボーダレス フォームを作成する方法

Susan Sarandon
リリース: 2025-01-11 13:01:40
オリジナル
412 人が閲覧しました

How to Create Resizable Borderless Forms in Windows Forms?

枠のないフォームを作成: 美しくサイズ変更可能

カスタム フォーム インターフェイスを設計する場合、開発者は通常、シンプルな境界線のない外観を好みます。 Windows では、「FormBorderStyle」プロパティを使用してデフォルトの枠線を簡単に削除する方法が提供されていますが、これによりフォームのサイズを変更できなくなります。

この制限を克服するために、境界線のない美しさとシームレスなサイズ変更機能を同時に可能にする包括的なコード ソリューションを検討してみましょう。

<code class="language-csharp">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);
    }

    // 拦截 WM_NCHITTEST 消息以实现自定义调整大小行为
    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>
ログイン後にコピー

このコードをボーダーレスフォームに実装すると、望ましい美しさを維持しながらサイズ変更機能を効果的に有効にすることができます。シミュレートされたタイトル バーとカスタム グラブ インジケーターにより、直感的でフル機能のユーザー エクスペリエンスが提供され、ユーザーはフォームのサイズを簡単に変更できます。

以上がWindows フォームでサイズ変更可能なボーダレス フォームを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート