W systemie Windows 7 z motywem Aero okno Preferencje Notepad ++ ma kwadratowe rogi, brak ikony menu systemowego, przycisk zamykania i ciemniejszą 1px
ramkę. To okno ma również AlwaysOnTop
atrybut.
(Zmieniłem rozmiar okna, aby dopasować szerokość 640px
.)
Co ciekawe, możesz skopiować ten styl do innych okien za pomocą AutoHotkey . Wydaje się więc, że nie ma w tym żadnych brudnych sztuczek. Jednak nie sądzę, że widziałem ten styl okna gdzie indziej.
Czy używanie tego stylu jest potępiane przez Microsoft? Czy ten typ okna ma nazwę?
Dla ciekawskich: Normal vs „Square”
Odpowiedzi:
Nazywa się to oknem narzędzia (paska) . Wszystkie okna o
WS_EX_TOOLWINDOW
rozszerzonym stylu będą renderowane bez menu systemowego lub minimalizacji / maksymalizacji pól i małego paska tytułu. W systemie Windows XP i nowszych (obsługujących motywy) okna narzędzi są zwykle renderowane bez zaokrąglonych rogów (przynajmniej z domyślnymi motywami).Ten styl jest zwykle używany w przypadku pasków narzędzi (rysunek 1). Możesz to zobaczyć, przeciągając pasek narzędzi z programu, który umożliwia zmianę rozmieszczenia pasków narzędzi. Zauważ, że staje się oknem, które wygląda jak to, o którym mowa. Eksplorator Windows używa go również w przypadku pasków biurkowych (rysunek 2), które są w zasadzie takie same. Możesz je zobaczyć, przeciągając folder na jedną z krawędzi ekranu, a następnie przeciągając wynikowy pasek narzędzi / pasek na biurko na pulpit.
Oczywiście niektóre programy używają tego stylu do innych celów, często jako sposób na stworzenie modalnego, tymczasowego okna dialogowego, które jest potomkiem programu głównego.
Uwaga: ma to kilka efektów (pierwsze dwa są zwykle przyczyną niestandardowego użycia):
Rysunek 1: Okno paska narzędzi MSPaint
Rysunek 2: Pasek na biurko Eksploratora Windows
źródło
Alt
+PrintScreen
przechwytuje tylko okno dialogowe w Windows 7 z oknem dialogowym Preferencje Notepad ++.Szczegółowo określa nazwę tego stylu okna i opcje dostępne w .NET; zobacz doskonałą odpowiedź @ Synetech na pierwotne przeznaczenie tego stylu okna, powody, dla których można go użyć w takim oknie dialogowym i implementację w niezarządzanych programach Windows, takich jak Notepad ++.
Okno ma kwadratowe rogi i wygląda tak, ponieważ jeden z projektantów / programistów Notepad ++ zdecydował się użyć określonego stylu okna. Synetech szczegółowo opisuje zalety tego stylu okna.
W .NET / Visual Studio jest to ustawione we
FormBorderStyle
właściwościSystem.Windows.Forms.Form
klasy. W szczególności jest toFixedToolWindow
. Możliwe wartości są wSystem.Windows.Forms.FormBorderStyle
wyliczeniu.W
ToolWindow
ów w .NET z wszystkich wartości domyślnej pracy trochę inaczej niż zwykłyWS_EX_TOOLWINDOW
w Windows API, choć wyglądają tak samo. Z badań, I ustalili, że nie pojawiają się na pasku zadań, a oni nie pojawiają się na Alt+ Tabprzełącznik zadań, chyba że nieruchomość formaShowInTaskbar
jest ustawionafalse
.ShowInTaskbar
wpływa na widoczność zarówno na pasku zadań, jak i Alt+ TabdlaToolWindow
s, ale tylko dla innych.Tymczasem możliwe jest również usunięcie przycisków ikona / minimalizuj / przywróć / maksymalizuj z bardziej popularnych stylów okien, chociaż wydaje się, że nie można ich dodać do
ToolWindow
s. Możliwe jest również ukrycie normalnych okien na pasku zadań.Jedyną zaletą funkcjonalną
WS_EX_TOOLWINDOW
, o ile mogę stwierdzić, jest to, że okno nie pojawia się w Alt+ Tab.Dołączyłem kilka zrzutów ekranu porównujących style okien .NET. Nie są one bezpośrednio używane przez Notepad ++ ani inne niezarządzane programy, ale są nazwane przez Microsoft, więc ...
Możliwe wartości
FormBorderStyle
:Pierwszy obraz to zrzut ekranu uruchomionego programu z włączonym Aero, drugi z widoku projektanta Visual Studio (bez Aero).
Kliknij obrazy dla wersji w pełnym rozmiarze.
Opisy pochodzą z artykułu MSDN na temat
FormBorderStyle
wyliczenia.None
FixedSingle
Fixed3D
FixedDialog
Sizable
(domyślna)FixedToolWindow
SizableToolWindow
źródło
WS_EX_TOOLWINDOW
stylu. .NET po prostu aliasyFixedToolWindow
doWS_EX_TOOLWINDOW
iSizableToolWindow
doWS_EX_TOOLWINDOW|WS_THICKFRAME
. Bez obrazy, ale ta odpowiedź tak naprawdę nie odpowiada na pytanie ani nie wyjaśnia zadanego zachowania, jest to po prostu lista / zasób różnych stylów okien używanych w .NET.Does this type of window have a name?
Odpowiada tak wiele, przynajmniej z perspektywy programisty .NET. I wyjaśnienie? Ponieważ programista miał ochotę go użyć. Wymieniłeś potencjalnie pożądane efekty. O to chodzi. Bez względu na to, czy jest to zalecane, czy potępione przez stwardnienie rozsiane, nie mam pojęcia. Osobiście uważam, że wykonałeś wspaniałą pracę, tłumacząc to.