Perché questa finestra ha gli angoli quadrati?


24

Su Windows 7 con il tema Aero, la finestra Preferenze di Notepad ++ presenta angoli quadrati, nessuna icona del menu di sistema, un pulsante di chiusura e un 1pxbordo più scuro . Questa finestra ha anche un AlwaysOnTopattributo.

notepad ++
(Ho ridimensionato la finestra per adattarla a una larghezza di 640px.)

È interessante notare che è possibile copiare questo stile su altre finestre usando AutoHotkey . Quindi, sembrerebbe che non ci siano trucchi sporchi coinvolti. Tuttavia, non credo di aver visto questo stile di finestra altrove.

L'uso di questo stile è condannato da Microsoft? Questo tipo di finestra ha un nome?


Per i curiosi: normale vs "Square"

normale   calcolatrice


Penso (ma non sono sicuro) che il framework .NET fornirà un frame con angoli arrotondati per impostazione predefinita, e nessuno ha davvero voglia di cambiarlo.
soandos,

Perché Apple ha un brevetto sugli angoli arrotondati.
Chloe,

Risposte:


37

Si chiama finestra Tool (barra) . Tutte le finestre con lo WS_EX_TOOLWINDOWstile esteso verranno visualizzate senza un menu di sistema o minimizzare / massimizzare le caselle e una piccola barra del titolo. In Windows XP e versioni successive (che supportano i temi), le finestre degli strumenti vengono generalmente visualizzate senza angoli arrotondati (almeno con i temi predefiniti).

Questo stile viene solitamente utilizzato per le barre degli strumenti (Figura 1). Puoi vederlo trascinando una barra degli strumenti fuori da un programma che ti consente di riorganizzare le barre degli strumenti. Si noti che diventa una finestra che assomiglia a quella in questione. Windows Explorer lo usa anche per le bande da scrivania (Figura 2) che sono sostanzialmente la stessa cosa. Puoi vederli trascinando una cartella su uno dei bordi dello schermo, quindi trascina la barra degli strumenti / deskband risultante sul desktop.

Ovviamente alcuni programmi usano lo stile per altri scopi, spesso come un modo per creare una sorta di dialogo modale e temporaneo che è figlio del programma principale.

Nota: questo ha un paio di effetti (i primi due dei quali di solito sono i motivi del suo uso non standard):

  • Una finestra / finestra di dialogo con questo stile non ottiene un pulsante sulla barra delle applicazioni
  • Impedisce Alt+ Tabbing alla finestra di dialogo
  • Inoltre impedisce al Alt+ PrtScrdi catturare solo la finestra di dialogo; viene catturata l'intera finestra del programma genitore.

Figura 1: finestra della barra degli strumenti di MSPaint

inserisci qui la descrizione dell'immagine

Figura 2: deskband di Windows Explorer

inserisci qui la descrizione dell'immagine


Aha! Ciò ha senso. :)
iglvzx,

Alt+ PrintScreenacquisisce solo la finestra di dialogo in Windows 7 con la finestra di dialogo Preferenze di Notepad ++.
Bob

17

Questo dettaglia il nome di questo stile di finestra e le opzioni disponibili in .NET; vedere l'eccellente risposta di @ Synetech per lo scopo originale di questo stile di finestra, i motivi per cui può essere usato per una tale finestra di dialogo e l'implementazione in programmi Windows non gestiti come Notepad ++.


La finestra ha gli angoli quadrati e appare così perché uno dei designer / programmatori di Notepad ++ ha deciso di utilizzare uno stile di finestra specifico. Synetech descrive in dettaglio i vantaggi di quello stile di finestra.

In .NET / Visual Studio, questo è impostato nella FormBorderStyleproprietà della System.Windows.Forms.Formclasse. In particolare, è il FixedToolWindow. I possibili valori sono System.Windows.Forms.FormBorderStylenell'enumerazione.

Gli ToolWindows in .NET con tutti i valori predefiniti funzionano in modo leggermente diverso da un piano WS_EX_TOOLWINDOWnell'API di Windows, sebbene abbiano lo stesso aspetto. Con il test, ho deciso che non appaiono sulla barra delle applicazioni e non appaiono sul Alt+ Tabtask switcher a meno che la proprietà del modulo ShowInTaskbarè impostato false. ShowInTaskbarinfluenza la visibilità sia nella barra delle applicazioni sia in Alt+ Tabper ToolWindows, ma solo nella barra delle applicazioni per gli altri.

Nel frattempo, è anche possibile rimuovere l'icona / minimizzare / ripristinare / ingrandire i pulsanti dagli stili di finestra più comuni, sebbene non sia possibile aggiungerli a ToolWindows. È anche possibile nascondere le finestre normali dalla barra delle applicazioni.

L'unico vantaggio funzionale offerto WS_EX_TOOLWINDOW, per quanto ne so, è che la finestra non appare in Alt+ Tab.


Ho incluso alcuni screenshot confrontando gli stili di finestra .NET. Questi non sono utilizzati direttamente da Notepad ++, né altri programmi non gestiti, ma sono denominati da Microsoft, quindi ...

Possibili valori di FormBorderStyle:

La prima immagine è uno screenshot del programma in esecuzione con Aero abilitato, la seconda è dalla vista del designer di Visual Studio (no Aero).
Clicca le immagini per le versioni full size
Le descrizioni sono prese dal articolo di MSDN sulla FormBorderStyleenumerazione.

  • None

    Nessun bordo.

Screenshot_Aero Screenshot_NonAero

  • FixedSingle

    Un bordo fisso a linea singola.

Screenshot_Aero Screenshot_NonAero

  • Fixed3D

    Un bordo tridimensionale fisso.

Screenshot_Aero Screenshot_NonAero

  • FixedDialog

    Un bordo spesso e fisso in stile dialogo.

Screenshot_Aero Screenshot_NonAero

  • Sizable (predefinito)

    Un bordo ridimensionabile.

Screenshot_Aero Screenshot_NonAero

  • FixedToolWindow

    Un bordo della finestra dello strumento che non è ridimensionabile. Una finestra degli strumenti non viene visualizzata nella barra delle applicazioni o nella finestra che appare quando l'utente preme ALT+ TAB. Sebbene i moduli specificati in FixedToolWindowgenere non vengano visualizzati nella barra delle applicazioni, è necessario assicurarsi che la ShowInTaskbarproprietà sia impostata su false, poiché il suo valore predefinito è true.

Screenshot_Aero Screenshot_NonAero

  • SizableToolWindow

    Un bordo della finestra dello strumento ridimensionabile. Una finestra degli strumenti non viene visualizzata nella barra delle applicazioni o nella finestra che appare quando l'utente preme ALT+ TAB.

Screenshot_Aero Screenshot_NonAero


Si! quello di cui stavamo parlando.
avirk,

Non ha nulla a che fare con il codice gestito / non gestito o nativo / .NET. È semplicemente una questione di come Windows stili le finestre con lo WS_EX_TOOLWINDOWstile. .NET semplicemente alias FixedToolWindowda WS_EX_TOOLWINDOWe SizableToolWindowverso WS_EX_TOOLWINDOW|WS_THICKFRAME. Senza offesa, ma questa risposta in realtà non risponde alla domanda o spiega il comportamento richiesto, è semplicemente un elenco / risorsa di diversi stili di finestra utilizzati in .NET.
Synetech,

@Synetech Sono consapevole che non ha nulla a che fare con la gestione o meno del codice, ho solo pensato di dare il nome di .NET e le altre opzioni disponibili, con schermate delle differenze. Does this type of window have a name?Risponde molto, almeno dal punto di vista di un programmatore .NET. E spiegazione? Perché il programmatore aveva voglia di usarlo. Hai elencato gli effetti desiderati. Questo è tutto. Che sia raccomandato o condannato dalla SM, non ne ho idea. Personalmente, penso che tu abbia svolto un lavoro ammirevole nel spiegarlo.
Bob,

Ecco a cosa servono le modifiche.
Synetech,

Cos'è @Synetech?
Bob
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.