Heim >Backend-Entwicklung >C++ >Wie kann ich mit P/Invoke die Schaltfläche „Schließen' in einem WPF-Fenster ausblenden?
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);
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);
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!