Maison >développement back-end >C++ >Comment puis-je masquer le bouton de fermeture dans une fenêtre WPF à l'aide de P/Invoke ?

Comment puis-je masquer le bouton de fermeture dans une fenêtre WPF à l'aide de P/Invoke ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-03 02:37:38477parcourir

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

Comment masquer le bouton de fermeture dans WPF Windows : une solution P/Invoke

Dans WPF, il peut être souhaitable de masquer le bouton de fermeture dans une boîte de dialogue modale tout en préservant la barre de titre. Bien que les propriétés WPF intégrées n'offrent pas cette fonctionnalité, l'utilisation de P/Invoke offre une solution de contournement.

Étape 1 : déclarer les constantes pertinentes et les fonctions DllImport

Commencez par ajouter les constantes suivantes et les déclarations DllImport à votre fenêtre 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);

Étape 2 : Masquer le bouton de fermeture dans l'événement chargé

Ensuite, incluez ce code dans l'événement chargé de la fenêtre :

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

Résultat attendu :

Dès que en exécutant ces étapes, le bouton de fermeture disparaîtra de la barre de titre, tandis que la barre de titre elle-même reste visible.

Remarque importante :

Bien que le bouton de fermeture soit masqué, l'utilisateur peut toujours fermer la fenêtre à l'aide de raccourcis clavier ou de la barre des tâches. Pour éviter cela, envisagez de remplacer l'événement OnClosing et de définir Cancel sur true, comme suggéré dans une autre réponse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn