Почему это окно имеет квадратные углы?
В Windows 7 с темой Aero окно " Настройки" Notepad++ имеет квадратные углы, значок системного меню отсутствует, кнопку закрытия и более темный цвет. 1px
границы. Это окно также имеет AlwaysOnTop
приписывать.
(Я изменил размер окна, чтобы соответствовать ширине 640px
.)
Интересно, что вы можете скопировать этот стиль в другие окна, используя AutoHotkey. Таким образом, казалось бы, что здесь нет грязных уловок. Тем не менее, я не думаю, что видел этот стиль окна где-либо еще.
Использует ли этот стиль Microsoft? У этого типа окна есть имя?
Для любопытных: Нормальный против "Квадрат"
2 ответа
Это называется окно инструментов (панель). Любые окна, которые имеют WS_EX_TOOLWINDOW
расширенный стиль будет отображаться без системного меню или блоков минимизации / максимизации и небольшого заголовка. В Windows XP и более поздних версиях (которые поддерживают темы) окна инструментов обычно отображаются без закругленных углов (по крайней мере, с темами по умолчанию).
Этот стиль обычно используется для панелей инструментов (рисунок 1). Вы можете увидеть это, перетащив панель инструментов из программы, которая позволяет вам переставить панели инструментов. Обратите внимание, что оно становится окном, похожим на рассматриваемое. Проводник Windows также использует его для настольных лент (рисунок 2), которые в основном то же самое. Это можно увидеть, перетащив папку к одному из краев экрана, а затем перетащив получившуюся панель инструментов / рабочий стол на рабочий стол.
Очевидно, что некоторые программы используют этот стиль для других целей, часто как способ создания своего рода временного временного диалога, который является дочерним по отношению к основной программе.
Примечание: это имеет несколько эффектов (первые два из которых обычно являются причинами его нестандартного использования):
- Окно / диалог с этим стилем не получает кнопку на панели задач
- Это предотвращает Alt + Tab привязки к диалогу
- Это также препятствует тому, чтобы Alt + PrtScr захватывал только диалог; все окно родительской программы захвачено.
Рисунок 1: Окно панели инструментов MSPaint
Рисунок 2: Настольная панель Windows Explorer
Это детализирует название этого стиля окна и параметры, доступные в.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
s. Также можно скрыть обычные окна из панели задач.
Единственное функциональное преимущество WS_EX_TOOLWINDOW
предлагает, насколько я могу судить, это то, что окно не появляется в Alt + Tab.
Я включил несколько скриншотов, сравнивающих стили окон.NET. Они не используются непосредственно Notepad ++ и другими неуправляемыми программами, но называются Microsoft, поэтому...
Возможные значения FormBorderStyle
:
Первое изображение - это скриншот работающей программы с включенной Aero, второе - из конструктора Visual Studio (без Aero).
Нажмите на изображение для полной версии
Описания взяты из статьи MSDN на FormBorderStyle
перечисление.
None
Без границ.
FixedSingle
Фиксированная однострочная граница.
Fixed3D
Фиксированная трехмерная граница.
FixedDialog
Толстая фиксированная граница в стиле диалога.
Sizable
(дефолт)Изменяемая граница.
FixedToolWindow
Граница окна инструмента, размер которой не изменяется. Окно инструмента не появляется на панели задач или в окне, которое появляется, когда пользователь нажимает ALT + TAB. Хотя формы, которые указывают
FixedToolWindow
как правило, не отображаются на панели задач, вы также должны убедиться, чтоShowInTaskbar
свойство установлено вfalse
, поскольку его значение по умолчаниюtrue
,
SizableToolWindow
Изменяемая граница окна инструмента. Окно инструмента не появляется на панели задач или в окне, которое появляется, когда пользователь нажимает ALT + TAB.