Warum hat dieses Fenster quadratische Ecken?

24

Unter Windows 7 mit dem Aero-Design verfügt das Fenster " Einstellungen" von Notepad ++ über quadratische Ecken, kein Systemmenüsymbol, eine Schaltfläche zum Schließen und einen dunkleren Rahmen 1px. Dieses Fenster hat auch ein AlwaysOnTopAttribut.

Notizblock ++
(Ich habe das Fenster auf eine Breite von angepasst 640px.)

Interessanterweise können Sie diesen Stil mit AutoHotkey in andere Fenster kopieren . Es scheint also, dass es keine schmutzigen Tricks gibt. Ich glaube jedoch, dass ich diesen Fensterstil nirgendwo anders gesehen habe.

Wird die Verwendung dieses Stils von Microsoft verurteilt? Hat dieser Fenstertyp einen Namen?


Für die Neugierigen: Normal vs "Square"

normal   Taschenrechner

iglvzx
quelle
Ich denke (bin mir aber nicht sicher), dass das .NET Framework standardmäßig einen Rahmen mit abgerundeten Ecken bereitstellt, und niemand hat wirklich Lust, ihn zu ändern.
Soandos
Weil Apple ein Patent auf abgerundete Ecken hat.
Chloe

Antworten:

37

Es wird als Tool-Fenster (Balkenfenster) bezeichnet . Alle Fenster mit dem WS_EX_TOOLWINDOWerweiterten Stil werden ohne ein Systemmenü oder Felder zum Minimieren / Maximieren und eine kleine Titelleiste gerendert. In Windows XP und höher (die Designs unterstützen) werden Toolfenster normalerweise ohne abgerundete Ecken gerendert (zumindest mit den Standarddesigns).

Dieser Stil wird normalerweise für Symbolleisten verwendet (Abbildung 1). Sie können es sehen, indem Sie eine Symbolleiste aus einem Programm ziehen, mit dem Sie die Symbolleisten neu anordnen können. Beachten Sie, dass es sich um ein Fenster handelt, das dem betreffenden Fenster ähnelt. Windows Explorer verwendet es auch für Deskbands (Abbildung 2), die im Grunde genommen dasselbe sind. Sie können diese anzeigen, indem Sie einen Ordner an einen der Bildschirmränder ziehen und dann die resultierende Symbolleiste / Deskband auf den Desktop ziehen.

Offensichtlich verwenden einige Programme den Stil für andere Zwecke, häufig um eine Art modalen, temporären Dialog zu erzeugen, der dem Hauptprogramm untergeordnet ist.

Hinweis: Dies hat einige Auswirkungen (die ersten beiden sind normalerweise die Gründe für die nicht standardmäßige Verwendung):

  • Ein Fenster / Dialogfeld mit diesem Stil erhält keine Schaltfläche in der Taskleiste
  • Es verhindert Alt+ Tabbing in den Dialog
  • Außerdem wird verhindert, dass das Alt+ PrtScrnur den Dialog erfasst. Das gesamte übergeordnete Programmfenster wird erfasst.

Abbildung 1: MSPaint-Symbolleistenfenster

Bildbeschreibung hier eingeben

Abbildung 2: Windows Explorer Deskband

Bildbeschreibung hier eingeben

Synetech
quelle
Aha! Das macht Sinn. :)
Iglvzx
Alt+ PrintScreenerfasst nur den Dialog in Windows 7 mit dem Dialog Notepad ++ Preferences.
Bob
17

Hier werden der Name dieses Fensterstils und die in .NET verfügbaren Optionen angegeben. Siehe @ Synetechs ausgezeichnete Antwort für den ursprünglichen Zweck dieses Fensterstils, die Gründe, aus denen es für ein solches Dialogfeld verwendet werden kann, und die Implementierung in nicht verwalteten Windows-Programmen wie Notepad ++.


Das Fenster hat quadratische Ecken und sieht so aus, weil sich einer der Designer / Programmierer von Notepad ++ für einen bestimmten Fensterstil entschieden hat. Synetech erläutert die Vorteile dieses Fensterstils.

In .NET / Visual Studio wird dies in der FormBorderStyleEigenschaft der System.Windows.Forms.FormKlasse festgelegt. Insbesondere ist es das FixedToolWindow. Die möglichen Werte sind in der System.Windows.Forms.FormBorderStyleAufzählung.

Die ToolWindows in .NET mit allen Werten funktionieren standardmäßig ein wenig anders als eine Ebene WS_EX_TOOLWINDOWin der Windows-API, obwohl sie gleich aussehen. Bei Tests habe ich festgestellt , dass sie sich in der Taskleiste angezeigt werden und sie tun erscheinen auf dem Alt+ TabTask Switcher , wenn die Form Eigenschaft ShowInTaskbareingestellt ist false. ShowInTaskbarBeeinflusst die Sichtbarkeit sowohl in der Taskleiste als auch in Alt+ Tabfür ToolWindows, jedoch nur für andere.

In der Zwischenzeit ist es auch möglich, die Schaltflächen "Symbol" / "Minimieren" / "Wiederherstellen" / "Maximieren" aus den gebräuchlicheren Fensterstilen zu entfernen, obwohl es anscheinend nicht möglich ist, sie zu ToolWindows hinzuzufügen . Es ist auch möglich, normale Fenster in der Taskleiste auszublenden.

Der einzige funktionale Vorteil ist WS_EX_TOOLWINDOW, soweit ich das beurteilen kann, dass das Fenster nicht in Alt+ erscheint Tab.


Ich habe einige Screenshots beigefügt, in denen die .NET-Fensterstile verglichen werden. Diese werden nicht direkt verwendet von Notepad ++, noch andere nicht verwaltete Programme, sondern werden von Microsoft genannt, so ...

Mögliche Werte von FormBorderStyle:

Das erste Bild ist ein Screenshot des laufenden Programms mit aktiviertem Aero, das zweite ist aus der Sicht des Visual Studio-Designers (kein Aero).
Klicken Sie auf die Bilder, um die Vollversion zu sehen. Die
Beschreibungen stammen aus dem MSDN-Artikel zur FormBorderStyleAufzählung.

  • None

    Keine Grenze.

Screenshot_Aero Screenshot_NonAero

  • FixedSingle

    Eine feste, einzeilige Grenze.

Screenshot_Aero Screenshot_NonAero

  • Fixed3D

    Eine feste dreidimensionale Grenze.

Screenshot_Aero Screenshot_NonAero

  • FixedDialog

    Ein dicker, fester Rahmen im Dialogstil.

Screenshot_Aero Screenshot_NonAero

  • Sizable (Standard)

    Eine anpassbare Grenze.

Screenshot_Aero Screenshot_NonAero

  • FixedToolWindow

    Ein Werkzeugfensterrahmen, dessen Größe nicht geändert werden kann. Ein Werkzeugfenster wird nicht in der Taskleiste oder im Fenster angezeigt, das angezeigt wird, wenn der Benutzer ALT+ drückt TAB. Obwohl FixedToolWindownormalerweise angegebene Formulare nicht in der Taskleiste angezeigt werden, müssen Sie auch sicherstellen, dass die ShowInTaskbarEigenschaft auf festgelegt ist false, da der Standardwert lautet true.

Screenshot_Aero Screenshot_NonAero

  • SizableToolWindow

    Ein anpassbarer Werkzeugfensterrahmen. Ein Werkzeugfenster wird nicht in der Taskleiste oder im Fenster angezeigt, das angezeigt wird, wenn der Benutzer ALT+ drückt TAB.

Screenshot_Aero Screenshot_NonAero

Bob
quelle
Ja! Davon sprachen wir.
Avirk
Es hat nichts mit verwaltetem / nicht verwaltetem oder nativem / .NET-Code zu tun. Es ist einfach eine Frage, wie Windows Fenster mit dem WS_EX_TOOLWINDOWStil formatiert. .NET aliasiert einfach FixedToolWindowan WS_EX_TOOLWINDOWund SizableToolWindowan WS_EX_TOOLWINDOW|WS_THICKFRAME. Keine Beleidigung, aber diese Antwort beantwortet weder die Frage noch erklärt sie das gewünschte Verhalten. Es handelt sich lediglich um eine Liste / Ressource verschiedener in .NET verwendeter Fensterstile .
Synetech
@Synetech Mir ist bewusst, dass es nichts damit zu tun hat, ob der Code verwaltet wird oder nicht. Ich dachte nur, ich würde den Namen, den .NET verwendet, und die anderen verfügbaren Optionen mit Screenshots der Unterschiede angeben. Does this type of window have a name?Dies wird zumindest aus Sicht eines .NET-Programmierers beantwortet. Und Erklärung? Weil der Programmierer Lust hatte, es zu benutzen. Sie haben möglicherweise gewünschte Effekte aufgelistet. Das ist alles. Ob es von MS empfohlen oder verurteilt wird, weiß ich nicht. Persönlich denke ich, dass Sie eine bewundernswerte Arbeit darin geleistet haben, es zu erklären.
Bob
Dafür sind Bearbeitungen gedacht.
Synetech
Was ist das @Synetech?
Bob