ホームページ > バックエンド開発 > C++ > P/Invoke を使用して WPF ウィンドウの閉じるボタンを非表示にするにはどうすればよいですか?

P/Invoke を使用して WPF ウィンドウの閉じるボタンを非表示にするにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-03 02:37:38
オリジナル
436 人が閲覧しました

How Can I Hide the Close Button in a WPF Window Using P/Invoke?

WPF Windows で閉じるボタンを非表示にする方法: P/Invoke ソリューション

WPF では、閉じるボタンを非表示にすることが望ましい場合があります。タイトル バーを保持したまま、モーダル ダイアログで。組み込みの WPF プロパティはこの機能を提供しませんが、P/Invoke を活用すると回避策が得られます。

ステップ 1: 関連する定数と DllImport 関数を宣言する

まず始めます。次の定数と DllImport 宣言をウィンドウに追加します。 class:

private const int GWL_STYLE = -16;
private const int WS_SYSMENU = 0x80000;
[DllImport("user32.dll", SetLastError = true)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
ログイン後にコピー

ステップ 2: Loaded イベントで閉じるボタンを非表示にする

次に、次のコードを Window の Loaded イベントに含めます:

var hwnd = new WindowInteropHelper(this).Handle;
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);
ログイン後にコピー

予想結果:

これらの手順を実行すると、タイトル バー自体は表示されたままですが、閉じるボタンがタイトル バーから消えます。

重要な注意事項:

閉じるボタンが非表示になっている間も、ユーザーはキーボード ショートカットまたはタスク バーを使用してウィンドウを閉じることができます。これを防ぐには、別の回答で提案されているように、OnClosing イベントをオーバーライドし、Cancel を true に設定することを検討してください。

以上がP/Invoke を使用して WPF ウィンドウの閉じるボタンを非表示にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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