Pourquoi cette fenêtre a-t-elle des coins carrés?


24

Sur Windows 7 avec le thème Aero, la fenêtre Préférences de Notepad ++ a des coins carrés, pas d'icône de menu système, un bouton de fermeture et une 1pxbordure plus sombre . Cette fenêtre a également un AlwaysOnTopattribut.

bloc-notes ++
(J'ai redimensionné la fenêtre pour une largeur de 640px.)

Chose intéressante, vous pouvez copier ce style dans d'autres fenêtres à l'aide d' AutoHotkey . Donc, il semblerait qu'il n'y ait pas de trucs sales impliqués. Cependant, je ne pense pas avoir vu ce style de fenêtre ailleurs.

L'utilisation de ce style est-elle condamnée par Microsoft? Ce type de fenêtre a-t-il un nom?


Pour les curieux: Normal vs "Square"

Ordinaire   calculatrice


Je pense (mais je ne suis pas sûr) que le cadre .NET donnera un cadre avec des coins arrondis par défaut, et personne n'a vraiment envie de le changer.
soandos

Parce qu'Apple a un brevet sur les coins arrondis.
Chloé

Réponses:


37

Cela s'appelle une fenêtre d'outils (barre) . Toutes les fenêtres qui ont le WS_EX_TOOLWINDOWstyle étendu seront rendues sans menu système ou minimiser / maximiser les zones et une petite barre de titre. Dans Windows XP et versions ultérieures (qui prennent en charge les thèmes), les fenêtres d'outils sont généralement rendues sans coins arrondis (au moins avec les thèmes par défaut).

Ce style est généralement utilisé pour les barres d'outils (figure 1). Vous pouvez le voir en faisant glisser une barre d'outils hors d'un programme qui vous permet de réorganiser les barres d'outils. Notez que cela devient une fenêtre qui ressemble à celle en question. L'Explorateur Windows l'utilise également pour les bandes de bureau (figure 2) qui sont essentiellement la même chose. Vous pouvez les voir en faisant glisser un dossier vers l'un des bords de l'écran, puis faites glisser la barre d'outils / bande de bureau résultante vers le bureau.

Évidemment, certains programmes utilisent le style à d'autres fins, souvent comme un moyen de créer une sorte de dialogue modal et temporaire qui est un enfant du programme principal.

Remarque: cela a quelques effets (dont les deux premiers sont généralement les raisons de son utilisation non standard):

  • Une fenêtre / boîte de dialogue avec ce style n'obtient pas de bouton dans la barre des tâches
  • Il empêche Alt+ Tabbing à la boîte de dialogue
  • Cela empêche également le Alt+ PrtScrde capturer uniquement la boîte de dialogue; toute la fenêtre du programme parent est capturée.

Figure 1: fenêtre de la barre d'outils MSPaint

entrez la description de l'image ici

Figure 2: bande de travail de l'Explorateur Windows

entrez la description de l'image ici


Aha! Ça a du sens. :)
iglvzx

Alt+ PrintScreencapture uniquement la boîte de dialogue dans Windows 7 avec la boîte de dialogue Préférences Notepad ++.
Bob

17

Cela détaille le nom de ce style de fenêtre et les options disponibles dans .NET; voir l'excellente réponse de @ Synetech pour l'objectif initial de ce style de fenêtre, les raisons pour lesquelles il peut être utilisé pour une telle boîte de dialogue et la mise en œuvre dans des programmes Windows non gérés tels que Notepad ++.


La fenêtre a des coins carrés et ressemble à cela car l'un des concepteurs / programmeurs de Notepad ++ a décidé d'utiliser un style de fenêtre spécifique. Synetech détaille les avantages de ce style de fenêtre.

Dans .NET / Visual Studio, cela est défini dans la FormBorderStylepropriété de la System.Windows.Forms.Formclasse. Plus précisément, c'est le FixedToolWindow. Les valeurs possibles sont dans l' System.Windows.Forms.FormBorderStyleénumération.

Les ToolWindows dans .NET avec toutes les valeurs par défaut fonctionnent un peu différemment d'un simple WS_EX_TOOLWINDOWdans l'API Windows, bien qu'ils se ressemblent. Avec les tests, j'ai déterminé qu'ils n'apparaissent dans la barre des tâches et ils n'apparaissent sur le + commutateur de tâche à moins que la propriété de formulaire est définie sur . affecte la visibilité à la fois dans la barre des tâches et + pour s, mais uniquement dans la barre des tâches pour les autres.AltTabShowInTaskbarfalseShowInTaskbarAltTabToolWindow

Pendant ce temps, il est également possible de supprimer les boutons icône / minimiser / restaurer / maximiser des styles de fenêtre les plus courants, bien qu'il ne semble pas possible de les ajouter à l' ToolWindowart. Il est également possible de masquer les fenêtres normales de la barre des tâches.

Le seul avantage fonctionnel WS_EX_TOOLWINDOWoffert, pour autant que je sache, est que la fenêtre n'apparaît pas dans Alt+ Tab.


J'ai inclus quelques captures d'écran comparant les styles de fenêtre .NET. Ceux-ci ne sont pas directement utilisés par Notepad ++, ni par d'autres programmes non gérés, mais sont nommés par Microsoft, donc ...

Valeurs possibles de FormBorderStyle:

La première image est une capture d'écran du programme en cours d'exécution avec Aero activé, la seconde provient de la vue du concepteur Visual Studio (pas Aero).
Cliquez sur les images pour les versions en taille réelle Les
descriptions sont extraites de l' article MSDN sur l' FormBorderStyleénumération.

  • None

    Pas de frontière.

Screenshot_Aero Screenshot_NonAero

  • FixedSingle

    Une bordure fixe d'une seule ligne.

Screenshot_Aero Screenshot_NonAero

  • Fixed3D

    Une bordure fixe en trois dimensions.

Screenshot_Aero Screenshot_NonAero

  • FixedDialog

    Une bordure de style boîte de dialogue épaisse et fixe.

Screenshot_Aero Screenshot_NonAero

  • Sizable (défaut)

    Une bordure redimensionnable.

Screenshot_Aero Screenshot_NonAero

  • FixedToolWindow

    Une bordure de fenêtre d'outil qui n'est pas redimensionnable. Une fenêtre d'outil n'apparaît pas dans la barre des tâches ou dans la fenêtre qui apparaît lorsque l'utilisateur appuie sur ALT+ TAB. Bien que les formulaires qui spécifient FixedToolWindowgénéralement ne soient pas affichés dans la barre des tâches, vous devez également vous assurer que la ShowInTaskbarpropriété est définie sur false, car sa valeur par défaut est true.

Screenshot_Aero Screenshot_NonAero

  • SizableToolWindow

    Une bordure de fenêtre d'outil redimensionnable. Une fenêtre d'outil n'apparaît pas dans la barre des tâches ou dans la fenêtre qui apparaît lorsque l'utilisateur appuie sur ALT+ TAB.

Screenshot_Aero Screenshot_NonAero


Ouais! c'est ce dont nous parlions.
avirk

Cela n'a rien à voir avec le code managé / non managé ou natif / .NET. Il s'agit simplement de savoir comment Windows style les fenêtres avec le WS_EX_TOOLWINDOWstyle. .NET alias simplement FixedToolWindowto WS_EX_TOOLWINDOWet SizableToolWindowto WS_EX_TOOLWINDOW|WS_THICKFRAME. Aucune infraction, mais cette réponse ne répond pas réellement à la question ou n'explique pas le comportement demandé, il s'agit simplement d'une liste / ressource de différents styles de fenêtre utilisés dans .NET.
Synetech

@Synetech Je suis conscient que cela n'a rien à voir avec la gestion ou non du code, je pensais juste donner le nom utilisé par .NET et les autres options disponibles, avec des captures d'écran des différences. Does this type of window have a name?Cela répond à cela, du moins du point de vue d'un programmeur .NET. Et l'explication? Parce que le programmeur avait envie de l'utiliser. Vous avez énuméré les effets éventuellement souhaités. C'est à peu près ça. Que ce soit recommandé ou condamné par la SEP, je n'en ai aucune idée. Personnellement, je pense que vous avez fait un travail admirable pour l'expliquer.
Bob

C'est à cela que servent les modifications.
Synetech

Qu'est-ce que c'est @Synetech?
Bob
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.