Futurebasic/语言/参考/window 语句
WINDOW [#]idExpr[,[title$][,[rect][,[type][,class]]]]
使用此语句可以执行以下任何操作
- 创建一个新的屏幕窗口;
- 激活(突出显示并置于最前面)一个现有的窗口;
- 使现有窗口可见或不可见;
- 更改现有窗口的标题或矩形。
参数应按如下方式指定。它们在创建新窗口或更改现有窗口时略有不同。
idExpr
- 一个正整数或负整数,其绝对值在 1 到 255 的范围内。title$
- 一个字符串表达式。rect
- 全局屏幕坐标中的一个矩形。您可以使用以下两种形式之一来表达它:(x1,y1)-(x2,y2)
两个对角线相对的角点。rectAddr&
指向 8 字节结构体(如RECT
类型)的长整数表达式或POINTER
变量。type
- 一个正整数或负整数,它指定窗口的总体外观,并指定它是否应该是“模态”的(模态窗口在打开时始终处于活动状态;它阻止用户选择另一个窗口或菜单栏项目,直到窗口关闭)。class
- 一个 0 到 255 之间的整数。
创建新的屏幕窗口
- 指定一个
idExpr
值,使得ABS(idExpr)
与任何现有窗口的 ID 号不同。将创建一个新窗口,并为其分配ABS(idExpr)
的 ID 号。您可以稍后使用窗口的 ID 号来识别其他 FB 语句和函数中的窗口。如果idExpr
为负,则窗口将不可见地创建;如果窗口将包含控件、编辑字段和图形,这些控件、编辑字段和图形可能需要很长时间才能构建,则创建不可见窗口有时很有用。您可以再次使用WINDOW
语句使不可见窗口可见(见下文)。当您创建一个新窗口时,它将成为当前输出窗口。如果可见地创建它(并且您没有指定_keepInBack
属性),它也将成为当前活动窗口。 title$
为窗口的标题栏分配一个字符串(如果窗口有标题栏)。如果您省略此参数,窗口将创建时不带标题。rect
指定窗口内容矩形的初始大小和位置。请注意,rect 不包括窗口的边框。如果您在rect
中指定了 (0,0) 的左上角坐标,则此参数将以特殊方式解释;在这种情况下,窗口将居中于屏幕,其宽度和高度将由rect
的右下角坐标决定。请注意,这种特殊解释仅适用于创建新窗口时。如果您省略此参数,将创建一个“默认”大小和位置的窗口。type
指定窗口的外观、模态和特殊属性(见下文)。如果您省略此参数,将创建一个类型为_doc
的非模态窗口,并且没有特殊属性。class
为窗口指定一个可选的“类号”。如果您的应用程序创建了多个窗口,则将相同的类号分配给执行给定类型功能的每个窗口很有用。之后,您可以使用WINDOW
函数确定当前活动窗口和当前输出窗口的类号;这可以帮助您的应用程序确定窗口的使用用途以及如何处理它。如果您省略此参数,新窗口将分配类号为零。激活现有窗口- 在
idExpr
中指定现有窗口的(正)ID 号。您无需指定任何其他参数,除非您还希望更改窗口的某些特性。窗口也将成为当前输出窗口。如果窗口不可见,则它将变得可见。注意:如果您在创建窗口时指定了_keepInBack
属性,并且还有其他可见窗口打开,则无法激活窗口。使现有窗口可见或不可见 - 要使窗口可见,请在
idExpr
中指定现有窗口的(正)ID 号。窗口也将成为当前活动窗口(除非其_keepInBack
属性已设置),并且它将成为当前输出窗口。 - 要使窗口不可见,请在
idExpr
中指定现有窗口 ID 号的负数。窗口将成为当前输出窗口。如果它是活动窗口,它将变为非活动窗口(可能强制另一个窗口变为活动窗口)。您无需指定任何其他参数,除非您还希望更改窗口的某些特性。更改现有窗口的特性 - 在
idExpr
中指定现有窗口的 ID 号(或其负数),并指定新的title$
和/或rect
参数(在窗口创建后,您无法更改窗口的type
或class
)。如果您省略任何参数,相应的特性将不会改变。请注意,rect
参数在您更改现有窗口时解释略有不同,与创建新窗口时相反;特别是,指定 (0,0) 的左上角坐标不会导致现有窗口居中于屏幕。如果您想更改现有窗口的矩形,使其居中于屏幕,请使用以下计算得到的rect
参数:DIM rect.8
x1 = (SYSTEM(_scrnWidth) - myWindowWidth) / 2
y1 = (SYSTEM(_scrnHeight) - myWindowHeight) / 2
x2 = x1 + myWindowWidth
y2 = y1 + myWindowHeight
CALL SETRECT(rect, x1, y1, x2, y2)
注意:如果您在更改窗口的特性时指定了窗口的(正)ID 号,则窗口也将成为当前活动窗口(除非其 _keepInBack
属性已设置)。如果您指定了窗口 ID 号的负数,则窗口将变得不可见。
激活窗口的副作用
WINDOW
语句总是使窗口处于活动状态,除非您指定负 idExpr
,或者您在创建窗口时指定了 _keepInBack
属性。当您使用 WINDOW
语句激活窗口时,还会发生以下情况
- 窗口也将成为当前输出窗口。(参见
WINDOW OUPTUT
语句,了解如何指定与活动窗口不同的输出窗口。) - 将生成类型为
_wndActivate
的 DIALOG 事件。(还有其他几种操作也会生成_wndActivate
事件;有关更多信息,请参见DIALOG
函数。) - 任何先前活动的窗口将变为非活动状态(这也将生成一个单独的
_wndActivate
DIALOG 事件)。
使窗口可见的副作用
如果 idExpr
是当前存在但不可见的窗口的(正)ID,则 WINDOW
语句将使窗口可见,并还会生成类型为 _wndRefresh
的 DIALOG 事件。当您可见地创建一个新窗口时,也会生成 _wndRefresh
事件。(注意:还有其他几种操作也会生成 _wndRefresh
事件;有关更多信息,请参见 DIALOG
函数。)
使窗口不可见的副作用
如果 idExpr
为负,则窗口将变得不可见,并且它将成为当前输出窗口。如果窗口先前处于活动状态,它将变为非活动状态;如果您的程序还有其他可见窗口,则其中一个窗口将变为活动窗口。
有关 type 参数的更多信息
type
参数是一个正整数或负整数。type
的绝对值决定窗口的总体外观,并决定一些特殊属性
它。type
的符号决定窗口是否为模态或非模态。如果
type
为负,则窗口将为模态,这意味着用户无法
切换到另一个窗口,直到模态窗口关闭;如果用户在
模态窗口处于活动状态时单击非活动窗口,则会发出哔哔声,但不会生成 _wndClick
事件。
type
可以表示如下
[-](窗口变体 [+属性 [+属性 ...]])
窗口变体
可以是以下任何一种
<图片在此处> |
|
带滚动条的空间的文档窗口。 |
<图片在此处> |
_dialogPlain | |
<图片在此处> |
|
普通对话框窗口。 阴影对话框窗口。 没有增长框的文档窗口。 可移动的对话框窗口。 带有缩放框和滚动条空间的文档窗口。 |
<图片在此处> |
|
圆角窗口。将 1 到 7 添加到此变体以增加角的圆度。 |
<图片在此处> |
|
带有关闭框的调色板窗口。您可以将常量 _WDEFhasZoom (8) 添加到此变体以使窗口具有缩放 |
<图片在此处> | _WDEFbaseID + _WDEFsideDrag (131) |
侧向调色板。您可以将常量 _WDEFhasZoom (8) 添加到此变体以使窗口具有缩放框。 |
176 到 191 | 这些值映射到外观管理器窗口类型 1984 到 1999。 | |
192 到 255 | 这些值映射到外观管理器窗口类型 1024 到 1087。 |
属性
可以是以下任何一种(您可以根据需要指定其中任意多个)
<图片在此处>
MINWINDOW; MAXWINDOW; SETZOOM; GET WINDOW; WINDOW CLOSE; WINDOW OUTPUT; WINDOW 函数; DIALOG 函数; AUTOCLIP