能见度

【勇芳软件工作室】汉化HomePreviousNext

窗口可以是可见的或隐藏的。Windows在屏幕上显示【可视窗口】.它隐藏【隐藏的窗口】不绘制它。如果窗口可见,用户可以向窗口提供输入并查看窗口的输出。如果一个窗口被隐藏,它被有效地禁用。一个隐藏的窗口可以处理来自Windows或其他窗口的邮件,但它不能处理来自用户的输入或显示输出。应用程序在创建窗口时设置窗口的可见性状态。之后,应用程序可以更改可见性状态。

当为窗口设置WS_VISIBLE样式时,窗口可见。默认情况下,CreateWindowEx函数创建一个隐藏窗口,除非应用程序指定了WS_VISIBLE样式。通常,一个应用程序在创建一个窗口之后设置WS_VISIBLE样式,以保持用户隐藏创建过程的细节。例如,应用程序可以在定制窗口外观时隐藏新窗口。如果CreateWindowEx中指定了WS_VISIBLE样式,Windows将在创建窗口之后但在显示之前将WM_SHOWWINDOW消息发送到窗口。

应用程序可以通过使用IsWindowVisible函数来确定窗口是否可见。应用程序可以使用ShowWindowSetWindowPosDeferWindowPosSetWindowPlacement功能显示(使可见)或隐藏窗口。这些功能通过设置或删除窗口的WS_VISIBLE样式来显示或隐藏窗口。他们还会在显示或隐藏窗口之前发送WM_SHOWWINDOW消息。

当所有者窗口最小化时,Windows会自动隐藏关联的所有窗口。类似地,当所有者窗口恢复时,Windows将自动显示关联的所属窗口。在这两种情况下,Windows会在隐藏或显示WM_SHOWWINDOW消息之前发送到所属的窗口。偶尔,应用程序可能需要隐藏所有的窗口,而不必最小化或隐藏所有者。在这种情况下,应用程序使用ShowOwnedPopups功能。此函数设置或删除所有所有窗口的WS_VISIBLE样式,并在隐藏或显示WM_SHOWWINDOW消息之前将其发送到所属窗口。隐藏所有者窗口对所有窗口的可见性状态没有影响。

当父窗口可见时,其相关联的子窗口也可见。同样,当父窗口被隐藏时,它的子窗口也被隐藏。最小化父窗口对子窗口的可见性状态没有影响;也就是说,子窗口与父节点一起被最小化,但是WS_VISIBLE样式没有改变。

即使窗口具有WS_VISIBLE样式,用户可能无法在屏幕上看到窗口;其他窗口可能完全重叠,或者可能已经移动到屏幕的边缘之外。此外,可见的子窗口受到其父子关系建立的剪裁规则的约束。如果窗口的父窗口不可见,它也将不可见。如果父窗口移动超出屏幕边缘,则子窗口也会移动,因为相对于父窗口左上角绘制子窗口。例如,即使子窗口及其父窗口都具有WS_VISIBLE样式,用户可以将包含子窗口的父窗口移动到屏幕边缘足够远,用户可能无法看到子窗口。