ホームページ >バックエンド開発 >C++ >Windowsフォームでボーダレスフォームを移動可能にするにはどうすればよいですか?

Windowsフォームでボーダレスフォームを移動可能にするにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-24 15:41:09992ブラウズ

How Can I Make a Borderless Form Movable in Windows Forms?

ドラッグ可能なボーダーレス Windows フォームの作成

Windows フォームでボーダーレス フォームをデザインすると、洗練されたモダンな美しさが生まれます。 ただし、これには多くの場合、通常のタイトル バーや枠線を使用せずにフォームを移動可能にするにはどうすればよいかという課題が生じます。この記事では、Windows API を使用したソリューションを提供します。

重要なのは、SendMessage 関数と ReleaseCapture 関数を使用してタイトル バーのクリックをシミュレートすることです。 これらの API 呼び出しは、目に見える境界線がない場合でも、ウィンドウ マネージャーを効果的に騙してドラッグ操作を開始させます。

コードの実装は次のとおりです:

<code class="language-csharp">public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool ReleaseCapture();

private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        ReleaseCapture();
        SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
    }
}</code>

このコードをフォームの MouseDown イベント ハンドラーに追加すると、フォームのクライアント領域内の任意の場所をクリック アンド ドラッグすることで、枠なしフォームをドラッグして位置を変更できるようになります。 これにより、すっきりとしたボーダーレスなデザインを損なうことなく、必要な機能が提供されます。

以上がWindowsフォームでボーダレスフォームを移動可能にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。