Чому це вікно має квадратні кути?


24

У Windows 7 з темою Aero, у вікні налаштувань Notepad ++ є квадратні кути, відсутність значка системного меню, кнопка закриття та більш темна 1pxрамка. Це вікно також має AlwaysOnTopатрибут.

блокнот ++
(Я змінив розмір вікна під ширину 640px.)

Цікаво, що ви можете скопіювати цей стиль в інші вікна за допомогою функції AutoHotkey . Тож, здавалося б, ніяких брудних хитрощів немає. Однак я не думаю, що такого стилю вікон я не бачив ніде.

Чи використовує цей стиль засуджений Microsoft? Чи має цей тип вікна назву?


Для допитливих: Нормальний проти "Квадрат"

нормальний   калькулятор


Я думаю (але не впевнений), що .NET Framework дасть кадр із закругленими кутами за замовчуванням, і ніхто не відчуває, як його змінити.
soandos

Тому що Apple має патент на закруглені кути.
Хлоя

Відповіді:


37

Це називається вікно інструмента (панелі) . Будь-які вікна, що мають WS_EX_TOOLWINDOWрозширений стиль, відображатимуться без системного меню або мінімізувати / максимізувати поля та невелику панель заголовків. У Windows XP і новіших версіях (що підтримують теми) вікна інструментів, як правило, відображаються без закруглених кутів (принаймні, з теми за замовчуванням).

Цей стиль зазвичай використовується для панелей інструментів (мал. 1). Ви можете бачити це, перетягуючи панель інструментів із програми, яка дозволяє переставляти панелі інструментів. Зауважте, що воно стає вікном, схожим на розглянутий. Провідник Windows також використовує його для настільних наборів (мал. 2), які в основному є тим самим. Ви можете побачити їх, перетягнувши папку до одного з країв екрана, а потім перетягніть отриману панель інструментів / смугу робочого столу на робочий стіл.

Очевидно, що деякі програми використовують стиль для інших цілей, часто як спосіб створення свого роду модального, тимчасового діалогу, який відповідає дитині до основної програми.

Примітка: це має пару ефектів (перші два з яких зазвичай є причинами його нестандартного використання):

  • Вікно / діалогове вікно з цим стилем не отримує кнопку на панелі завдань
  • Це запобігає Alt+ Tabbing у діалоговому вікні
  • Це також не дозволяє Alt+ PrtScrзафіксувати лише діалогове вікно; захоплюється все вікно батьківської програми.

Малюнок 1: Вікно панелі інструментів MSPaint

введіть тут опис зображення

Малюнок 2: Полоса робочого столу Windows Explorer

введіть тут опис зображення


Ага! Що має сенс. :)
iglvzx

Alt+ PrintScreenфіксує лише діалогове вікно в Windows 7 за допомогою діалогового вікна «Налаштування блокнота ++».
Боб

17

Тут детально описано назву цього стилю вікна та параметри, доступні у .NET; див. відмінну відповідь @ Synetech для початкової мети цього стилю вікна, причини, за допомогою яких він може бути використаний для такого діалогового вікна та реалізації в керованих програмах Windows, таких як Notepad ++.


Вікно має квадратні кути і виглядає так, тому що один з дизайнерів / програмістів Notepad ++ вирішив використовувати певний стиль вікна. Synetech детально розглядає переваги цього стилю вікон.

У .NET / Visual Studio це встановлено у FormBorderStyleвластивості System.Windows.Forms.Formкласу. Зокрема, саме FixedToolWindow. Можливі значення знаходяться в System.Windows.Forms.FormBorderStyleперерахунку.

В ToolWindows в .NET з усіма значеннями по замовчуванням роботи трохи інакше з простої WS_EX_TOOLWINDOWв Windows API , хоча вони виглядають однаково. При тестуванні, я визначив , що вони дійсно з'являються на панелі завдань , і вони дійсно з'являються на Alt+ Tabперемикачі завдань , якщо властивість форми ShowInTaskbarне встановлено false. ShowInTaskbarвпливає на видимість і на панелі завдань, і Alt+ Tabдля ToolWindows, але лише на панелі завдань для інших.

Тим часом також можна видалити піктограму / мінімізувати / відновити / максимізувати кнопки з більш поширених стилів вікон, хоча, здається, неможливо додати їх до ToolWindows. Також можливо приховати звичайні вікна на панелі завдань.

Єдиною функціональною перевагою WS_EX_TOOLWINDOW, наскільки я можу сказати, є те, що вікно не відображається в Alt+ Tab.


Я включив кілька скріншотів, порівнюючи стилі вікон .NET. Вони безпосередньо не використовуються Notepad ++, ні інших некерованих програм, але які названі Microsoft, так що ...

Можливі значення FormBorderStyle:

Перше зображення - це скріншот запущеної програми з включеним Aero, друге - з виду дизайнера Visual Studio (без Aero).
Клацніть зображення для повнорозмірних версій.
Описи взяті із статті MSDN про FormBorderStyleперерахування.

  • None

    Без кордону немає.

Скріншот_Aero Скріншот_NonAero

  • FixedSingle

    Фіксований однолінійний кордон.

Скріншот_Aero Скріншот_NonAero

  • Fixed3D

    Фіксована, тривимірна межа.

Скріншот_Aero Скріншот_NonAero

  • FixedDialog

    Товста фіксована межа діалогового стилю.

Скріншот_Aero Скріншот_NonAero

  • Sizable (за замовчуванням)

    Змінна зміна кордону.

Скріншот_Aero Скріншот_NonAero

  • FixedToolWindow

    Межа вікна інструменту, яку не можна змінити. Вікно інструменту не з’являється на панелі завдань або у вікні, яке з’являється, коли користувач натискає ALT+ TAB. Хоча форми, які задають, FixedToolWindowяк правило, не відображаються на панелі завдань, ви також повинні переконатися, що ShowInTaskbarвластивість встановлено false, оскільки його значення за замовчуванням є true.

Скріншот_Aero Скріншот_NonAero

  • SizableToolWindow

    Кордон вікна інструменту з можливістю зміни розміру. Вікно інструменту не з’являється на панелі завдань або у вікні, яке з’являється, коли користувач натискає ALT+ TAB.

Скріншот_Aero Скріншот_NonAero


Так! що про що ми говорили
авірк

Це не має нічого спільного з керованим / некерованим або нативним кодом / .NET. Це просто питання про те, як Windows стилі вікон зі WS_EX_TOOLWINDOWстилем. .NET просто псевдоніми FixedToolWindowдо WS_EX_TOOLWINDOWта SizableToolWindowдо WS_EX_TOOLWINDOW|WS_THICKFRAME. Без образи, але ця відповідь насправді не відповідає на запитання чи не пояснює задану поведінку, це просто список / ресурс різних стилів вікон, використовуваних у .NET.
Synetech

@Synetech Я знаю, що це не має нічого спільного з керуванням кодом чи ні, я просто думав, що я дам ім'я. Does this type of window have a name?Це дійсно відповідає, принаймні, з точки зору програміста .NET. А пояснення? Тому що програміст відчув, що користується цим. Ви перерахували можливі бажані ефекти. Ось про це. Незалежно від того, рекомендує він це чи засуджує MS, я не маю уявлення. Особисто я думаю, що ви зробили чудову роботу, пояснивши це.
Боб

Ось для чого редагуються.
Synetech

Що це @Synetech?
Боб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.