在具有Aero主题的Windows 7上,Notepad ++的“ 首选项”窗口具有方形角,没有系统菜单图标,关闭按钮和较深的1px
边框。该窗口也有一个AlwaysOnTop
属性。
(我调整了窗口的大小以适合宽度640px
。)
有趣的是,您可以使用AutoHotkey将此样式复制到其他窗口。因此,似乎没有任何肮脏的把戏。但是,我认为我在其他任何地方都没有看到这种窗口样式。
是否使用Microsoft谴责的这种风格?这种窗口有名称吗?
出于好奇:正常vs“平方”
在具有Aero主题的Windows 7上,Notepad ++的“ 首选项”窗口具有方形角,没有系统菜单图标,关闭按钮和较深的1px
边框。该窗口也有一个AlwaysOnTop
属性。
(我调整了窗口的大小以适合宽度640px
。)
有趣的是,您可以使用AutoHotkey将此样式复制到其他窗口。因此,似乎没有任何肮脏的把戏。但是,我认为我在其他任何地方都没有看到这种窗口样式。
是否使用Microsoft谴责的这种风格?这种窗口有名称吗?
出于好奇:正常vs“平方”
Answers:
它称为工具(栏)窗口。任何具有WS_EX_TOOLWINDOW
扩展样式的窗口都将在没有系统菜单或最小化/最大化框和小标题栏的情况下呈现。在Windows XP及更高版本(支持主题)中,工具窗口通常呈现为没有圆角(至少具有默认主题)。
这种样式通常用于工具栏(图1)。您可以通过将工具栏从程序中拖出以重新排列工具栏来查看它。请注意,它变成一个看起来像所讨论的窗口。Windows资源管理器还将它用于桌面带(图2),它们基本上是相同的。您可以通过将文件夹拖动到屏幕边缘之一,然后将生成的工具栏/桌面带拖到桌面上来查看这些内容。
显然,某些程序将样式用于其他目的,通常将其作为创建主程序的子模态,临时对话框的一种方式。
注意:这有几个影响(前两个通常是其非标准用法的原因):
图1: MSPaint工具栏窗口
图2: Windows资源管理器桌面
Alt
+ PrintScreen
仅捕获Windows 7中带有“记事本++首选项”对话框的对话框。
这详细说明了此窗口样式的名称以及.NET中可用的选项。有关此窗口样式的原始目的,其可能用于此类对话框的原因以及在非托管Windows程序(如Notepad ++)中的实现,请参见@Synetech的出色答案。
该窗口具有直角,外观类似,因为Notepad ++的设计师/程序员之一决定使用特定的窗口样式。Synetech详细介绍了该窗口样式的优点。
在.NET / Visual Studio中,这是在类的FormBorderStyle
属性中设置的System.Windows.Forms.Form
。具体来说就是FixedToolWindow
。可能的值在System.Windows.Forms.FormBorderStyle
枚举中。
ToolWindow
.NET中带有所有值的s的默认工作方式WS_EX_TOOLWINDOW
与Windows API中的s有所不同,尽管它们看起来相同。通过测试,我确定它们确实出现在任务栏上,并且确实出现在Alt+ Tab任务切换器上,除非将form属性ShowInTaskbar
设置为false
。ShowInTaskbar
影响s 在任务栏和Alt+ Tab中ToolWindow
的可见性,但仅影响其他任务栏的可见性。
同时,尽管似乎不可能将它们添加到ToolWindow
s ,但也可以从更常见的窗口样式中删除图标/最小化/还原/最大化按钮。也可以从任务栏隐藏普通窗口。
WS_EX_TOOLWINDOW
据我所知,唯一提供的功能优势是该窗口未显示在Alt+中Tab。
我包括一些比较.NET窗口样式的屏幕截图。这些都不是直接使用记事本+ +,还是其他非托管程序,但被微软命名的,所以...
可能的值FormBorderStyle
:
第一个图像是启用了Aero的正在运行的程序的屏幕截图,第二个图像是从Visual Studio设计器视图(无Aero)中获得的。
单击完整尺寸的图像。
说明摘自枚举上的MSDN文章FormBorderStyle
。
None
无边界。
FixedSingle
固定的单行边框。
Fixed3D
固定的三维边框。
FixedDialog
固定的对话框样式粗边框。
Sizable
(默认)
可调整大小的边框。
FixedToolWindow
不可调整大小的工具窗口边框。当用户按下ALT+ 时,工具窗口不会出现在任务栏中或出现的窗口中TAB。尽管
FixedToolWindow
通常指定的表单未显示在任务栏中,但您还必须确保将该ShowInTaskbar
属性设置为false
,因为其默认值为true
。
SizableToolWindow
可调整大小的工具窗口边框。当用户按下ALT+ 时,工具窗口不会出现在任务栏中或出现的窗口中TAB。
Does this type of window have a name?
至少从.NET程序员的角度来看,它确实回答了很多。和解释?因为程序员喜欢使用它。您已列出可能需要的效果。就是这样 无论是推荐还是MS谴责,我都不知道。就个人而言,我认为您在解释它方面做得非常出色。