Maison >développement back-end >C++ >Comment masquer le bouton de fermeture dans une fenêtre WPF tout en conservant le

Comment masquer le bouton de fermeture dans une fenêtre WPF tout en conservant le

Patricia Arquette
Patricia Arquetteoriginal
2025-01-02 16:23:38952parcourir

How to Hide the Close Button in a WPF Window While Keeping the

Masquer le bouton de fermeture dans les fenêtres WPF

Dans WPF, la création de boîtes de dialogue modales nécessite une fenêtre sans bouton de fermeture tout en conservant une barre de titre visible . Malgré l'exploration de propriétés telles que ResizeMode, WindowState et WindowStyle, aucune d'entre elles ne répond à ce besoin spécifique.

Pour résoudre ce problème, vous pouvez utiliser P/Invoke pour manipuler le style de la fenêtre et obtenir le comportement souhaité. Voici comment procéder :

  1. Ajoutez les déclarations suivantes à votre classe Window :

    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. Dans l'événement Loaded de la fenêtre, incluez ceci code :

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

En exécutant ce code, vous réussirez à masquer le bouton de fermeture de la barre de titre, garantissant une expérience de dialogue modale plus intuitive.

Considérations importantes :

Bien que cette solution masque visuellement le bouton de fermeture, elle n'empêche pas l'utilisateur de fermer la fenêtre à l'aide de raccourcis clavier (par exemple, Alt F4) ou via la barre des tâches. Pour éviter la fermeture prématurée de la fenêtre, envisagez de remplacer l'événement OnClosing et de définir Cancel sur true.

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