为什么这个窗口有方角?

igl*_*vzx 24 windows-7 notepad++ gui styles

在带有 Aero 主题的 Windows 7 上,Notepad++ 的首选项窗口有方角、没有系统菜单图标、关闭按钮和较暗的1px边框。这个窗口也有一个AlwaysOnTop属性。

记事本++
(我调整了窗口的大小以适应640px.)

有趣的是,您可以使用AutoHotkey将此样式复制到其他窗口。因此,似乎没有涉及肮脏的伎俩。但是,我认为我在其他任何地方都没有见过这种窗口样式。

微软谴责使用这种风格吗?这种窗户有名字吗?


对于好奇:正常与“方形”

普通的   计算器

Syn*_*ech 37

它被称为Tool(bar) Window。任何具有WS_EX_TOOLWINDOW扩展样式的窗口都将在没有系统菜单或最小化/最大化框和小标题栏的情况下呈现。在 Windows XP 及更高版本(支持主题)中,工具窗口通常在渲染时没有圆角(至少在默认主题下)。

这种样式通常用于工具栏(图 1)。您可以通过从允许您重新排列工具栏的程序中拖出工具栏来查看它。请注意,它变成了一个看起来像所讨论的窗口的窗口。Windows 资源管理器也将其用于基本相同的桌面带(图 2)。您可以通过将文件夹拖到屏幕边缘之一来查看这些,然后将生成的工具栏/桌面带拖到桌面上。

显然,有些程序将样式用于其他目的,通常是作为创建一种模态临时对话框的一种方式,该对话框是主程序的子程序。

注意:这有几个影响(前两个通常是其非标准使用的原因):

  • 具有此样式的窗口/对话框在任务栏上没有按钮
  • 它可以防止Alt+ Tabbing 进入对话框
  • 它还可以防止Alt+PrtScr仅捕获对话框;整个父程序窗口被捕获。

图 1: MSPaint 工具栏窗口

在此处输入图片说明

图 2: Windows 资源管理器桌面带

在此处输入图片说明


Bob*_*Bob 17

这详细说明了此窗口样式的名称以及 .NET 中可用的选项;请参阅@Synetech 对此窗口样式的原始目的的出色回答,它可能用于此类对话框的原因以及在非托管 Windows 程序(如 Notepad++)中的实现。


窗口有方角,看起来像这样,因为 Notepad++ 的设计者/程序员之一决定使用特定的窗口样式。Synetech 详细介绍了该窗口样式的优点。

在 .NET/Visual Studio 中,这是在类的FormBorderStyle属性中设置的System.Windows.Forms.Form。具体来说,它是FixedToolWindow. 可能的值在System.Windows.Forms.FormBorderStyle枚举中。

ToolWindow.NET 中所有默认值的s 与WS_EX_TOOLWINDOWWindows API 中的普通 s 的工作方式略有不同,尽管它们看起来相同。通过测试,我确定它们确实出现在任务栏上并且它们确实出现在Alt+Tab任务切换器上,除非表单属性ShowInTaskbar设置为false. ShowInTaskbar影响在任务栏都和知名度Alt+TabToolWindowS,但只有任务栏等等。

同时,也可以从更常见的窗口样式中删除图标/最小化/恢复/最大化按钮,尽管似乎无法将它们添加到ToolWindows。也可以从任务栏中隐藏普通窗口。

WS_EX_TOOLWINDOW据我所知,唯一的功能优势是该窗口不会出现在Alt+ 中Tab


我已经包含了一些比较 .NET 窗口样式的屏幕截图。这些都不是直接使用记事本+ +,还是其他非托管程序,但微软命名的,所以...

的可能值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