Dlaczego to okno ma kwadratowe rogi?


24

W systemie Windows 7 z motywem Aero okno Preferencje Notepad ++ ma kwadratowe rogi, brak ikony menu systemowego, przycisk zamykania i ciemniejszą 1pxramkę. To okno ma również AlwaysOnTopatrybut.

notatnik ++
(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”

normalna   kalkulator


Myślę (ale nie jestem pewien), że platforma .NET domyślnie daje ramkę z zaokrąglonymi narożnikami i nikt tak naprawdę nie ma ochoty jej zmieniać.
— soandos

Ponieważ Apple ma patent na zaokrąglone rogi.
— Chloe,

Odpowiedzi:


37

Nazywa się to oknem narzędzia (paska) . Wszystkie okna o WS_EX_TOOLWINDOWrozszerzonym 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):

  • Okno / okno dialogowe z tym stylem nie wyświetla przycisku na pasku zadań
  • Zapobiega Alt+ Tabbing do okna dialogowego
  • Zapobiega również przechwytywaniu Alt+ PrtScrprzez okno dialogowe; całe okno programu nadrzędnego jest przechwytywane.

Rysunek 1: Okno paska narzędzi MSPaint

wprowadź opis zdjęcia tutaj

Rysunek 2: Pasek na biurko Eksploratora Windows

wprowadź opis zdjęcia tutaj


Aha! To ma sens. :)
— iglvzx

Alt+ PrintScreenprzechwytuje tylko okno dialogowe w Windows 7 z oknem dialogowym Preferencje Notepad ++.
— Bob

17

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 FormBorderStylewłaściwości System.Windows.Forms.Formklasy. W szczególności jest to FixedToolWindow. Możliwe wartości są w System.Windows.Forms.FormBorderStylewyliczeniu.

W ToolWindowów w .NET z wszystkich wartości domyślnej pracy trochę inaczej niż zwykły WS_EX_TOOLWINDOWw 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ść forma ShowInTaskbarjest ustawiona false. ShowInTaskbarwpływa na widoczność zarówno na pasku zadań, jak i Alt+ Tabdla ToolWindows, 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 ToolWindows. 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 FormBorderStylewyliczenia.

  • None

    Bez granic.

Screenshot_Aero Screenshot_NonAero

  • FixedSingle

    Stała, jednowierszowa granica.

Screenshot_Aero Screenshot_NonAero

  • Fixed3D

    Stała, trójwymiarowa granica.

Screenshot_Aero Screenshot_NonAero

  • FixedDialog

    Gruba, stała granica w stylu okna dialogowego.

Screenshot_Aero Screenshot_NonAero

  • Sizable (domyślna)

    Granica o zmiennym rozmiarze.

Screenshot_Aero Screenshot_NonAero

  • FixedToolWindow

    Obramowanie okna narzędzia, którego nie można zmienić rozmiaru. Okno narzędzia nie pojawia się na pasku zadań ani w oknie, które pojawia się, gdy użytkownik naciśnie ALT+ TAB. Chociaż formularze, które określają FixedToolWindowzazwyczaj, nie są wyświetlane na pasku zadań, należy również upewnić się, że ShowInTaskbarwłaściwość jest ustawiona na false, ponieważ jej wartością domyślną jest true.

Screenshot_Aero Screenshot_NonAero

  • SizableToolWindow

    Ramka okna narzędzia o zmiennym rozmiarze. Okno narzędzia nie pojawia się na pasku zadań ani w oknie, które pojawia się, gdy użytkownik naciśnie ALT+ TAB.

Screenshot_Aero Screenshot_NonAero


Tak! o tym mówiliśmy.
— avirk

Nie ma to nic wspólnego z kodem zarządzanym / niezarządzanym lub rodzimym / .NET. Jest to po prostu kwestia tego, jak system Windows stylizuje okna za pomocą tego WS_EX_TOOLWINDOWstylu. .NET po prostu aliasy FixedToolWindowdo WS_EX_TOOLWINDOWi SizableToolWindowdo WS_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.
— Synetech,

@ Synetech Zdaję sobie sprawę, że nie ma to nic wspólnego z tym, czy kod jest zarządzany, czy nie. Po prostu pomyślałem, że podam nazwę zastosowań .NET i innych dostępnych opcji wraz ze zrzutami ekranowymi różnic. 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.
— Bob

Po to są zmiany.
— Synetech,

Co to jest @ Synetech?
— Bob
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.