Heim > Backend-Entwicklung > C++ > Wie kann ich mit P/Invoke die Schaltfläche „Schließen' in einem WPF-Fenster ausblenden?

Wie kann ich mit P/Invoke die Schaltfläche „Schließen' in einem WPF-Fenster ausblenden?

Linda Hamilton
Freigeben: 2025-01-03 02:37:38
Original
500 Leute haben es durchsucht

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

So verbergen Sie die Schaltfläche „Schließen“ in WPF Windows: Eine P/Invoke-Lösung

In WPF kann es wünschenswert sein, die Schaltfläche „Schließen“ auszublenden in einem modalen Dialog unter Beibehaltung der Titelleiste. Während die integrierten WPF-Eigenschaften diese Funktion nicht bieten, bietet die Nutzung von P/Invoke eine Problemumgehung.

Schritt 1: Relevante Konstanten und DllImport-Funktionen deklarieren

Beginnen Sie mit Fügen Sie Ihrer Window-Klasse die folgenden Konstanten und DllImport-Deklarationen hinzu:

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);
Nach dem Login kopieren

Schritt 2: Blenden Sie die Schaltfläche „Schließen“ im Loaded-Ereignis aus

Fügen Sie als Nächstes diesen Code in das Loaded-Ereignis des Fensters ein:

var hwnd = new WindowInteropHelper(this).Handle;
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);
Nach dem Login kopieren

Erwartetes Ergebnis:

Nachdem Sie diese Schritte ausgeführt haben, verschwindet die Schaltfläche „Schließen“ aus der Titelleiste, während die Titelleiste selbst bestehen bleibt sichtbar.

Wichtiger Hinweis:

Während die Schaltfläche zum Schließen ausgeblendet ist, kann der Benutzer das Fenster weiterhin über Tastaturkürzel oder die Taskleiste schließen. Um dies zu verhindern, sollten Sie das OnClosing-Ereignis überschreiben und „Cancel“ auf „true“ setzen, wie in einer anderen Antwort vorgeschlagen.

Das obige ist der detaillierte Inhalt vonWie kann ich mit P/Invoke die Schaltfläche „Schließen' in einem WPF-Fenster ausblenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage