Почему это окно имеет квадратные углы?

В 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.

Другие вопросы по тегам