24

В Windows 7 с темой Aero окно « Настройки» в Notepad++ имеет квадратные углы, значок системного меню отсутствует, кнопку закрытия и более темную границу в 1 1px . Это окно также имеет атрибут AlwaysOnTop .

Notepad ++
(Я изменил размер окна, чтобы соответствовать ширине 640px .)

Интересно, что вы можете скопировать этот стиль в другие окна, используя AutoHotkey. Таким образом, казалось бы, что здесь нет грязных уловок. Тем не менее, я не думаю, что видел этот стиль окна где-либо еще.

Использует ли этот стиль Microsoft? У этого типа окна есть имя?


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

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

2 ответа2

37

Это называется окно инструментов (панель). Любые окна, которые имеют расширенный стиль WS_EX_TOOLWINDOW будут отображаться без системного меню или блоков минимизации / максимизации и небольшой заголовка заголовка. В Windows XP и более поздних версиях (которые поддерживают темы) окна инструментов обычно отображаются без закругленных углов (по крайней мере, с темами по умолчанию).

Этот стиль обычно используется для панелей инструментов (рисунок 1). Вы можете увидеть это, перетащив панель инструментов из программы, которая позволяет вам переставить панели инструментов. Обратите внимание, что оно становится окном, похожим на рассматриваемое. Проводник Windows также использует его для настольных лент (рисунок 2), которые в основном то же самое. Это можно увидеть, перетащив папку к одному из краев экрана, а затем перетащив получившуюся панель инструментов / рабочий стол на рабочий стол.

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

Примечание: это имеет несколько эффектов (первые два из которых обычно являются причинами его нестандартного использования):

  • Окно / диалог с этим стилем не получает кнопку на панели задач
  • Это предотвращает Alt+Tab привязки к диалогу
  • Это также препятствует тому, чтобы Alt+PrtScr захватил только диалог; захватывается все окно родительской программы.

Рисунок 1: Окно панели инструментов MSPaint

Рисунок 2: Настольная панель Windows Explorer

17

Это детализирует название этого стиля окна и параметры, доступные в .NET; см. отличный ответ @ Synetech о первоначальной цели этого стиля окна, причинах его использования в таком диалоговом окне и реализации в неуправляемых программах Windows, таких как Notepad++.


Окно имеет квадратные углы и выглядит так, потому что один из дизайнеров / программистов Notepad++ решил использовать определенный стиль окна. Synetech подробно описывает преимущества этого стиля окна.

В .NET/Visual Studio это устанавливается в свойстве FormBorderStyle System.Windows.Forms.Form класса. В частности, это FixedToolWindow . Возможные значения в System.Windows.Forms.FormBorderStyle .

Окно ToolWindow в .NET со всеми значениями по умолчанию работает немного иначе, чем обычный WS_EX_TOOLWINDOW в Windows API, хотя они выглядят одинаково. При тестировании, я определил , что они появляются на панели задач , и они появляются на переключателе задач Alt+Tab , если ShowInTaskbar формы собственности не установлен в false ShowInTaskbar влияет на видимость как на панели задач, так и на Alt+Tab для ToolWindow , но только на панель задач для других.

Между тем, также возможно удалить значки / свернуть / восстановить / развернуть кнопки из более распространенных стилей окна, хотя, кажется, невозможно добавить их в ToolWindow . Также можно скрыть обычные окна с панели задач.

Насколько я могу судить, единственное функциональное преимущество WS_EX_TOOLWINDOW - это то, что окно не появляется в Alt+Tab.


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

Возможные значения FormBorderStyle:

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

  • None

    Без границ.

Screenshot_Aero Screenshot_NonAero

  • FixedSingle

    Фиксированная однострочная граница.

Screenshot_Aero Screenshot_NonAero

  • Fixed3D

    Фиксированная трехмерная граница.

Screenshot_Aero Screenshot_NonAero

  • FixedDialog

    Толстая фиксированная граница в стиле диалога.

Screenshot_Aero Screenshot_NonAero

  • Sizable (по умолчанию)

    Изменяемая граница.

Screenshot_Aero Screenshot_NonAero

  • FixedToolWindow

    Граница окна инструмента, размер которой не изменяется. Окно инструментов не появляется на панели задач или в окне, которое появляется, когда пользователь нажимает ALT+TAB. Хотя формы, которые указывают FixedToolWindow обычно не отображаются на панели задач, вы также должны убедиться, что для свойства ShowInTaskbar установлено значение false , поскольку его значение по умолчанию - true .

Screenshot_Aero Screenshot_NonAero

  • SizableToolWindow

    Изменяемая граница окна инструмента. Окно инструментов не появляется на панели задач или в окне, которое появляется, когда пользователь нажимает ALT+TAB.

Screenshot_Aero Screenshot_NonAero

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .