跳转到内容

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 参数(在窗口创建后,您无法更改窗口的 typeclass)。如果您省略任何参数,相应的特性将不会改变。请注意,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 可以表示如下

[-](窗口变体 [+属性 [+属性 ...]])

窗口变体 可以是以下任何一种

<图片在此处>

_doc (1)

带滚动条的空间的文档窗口。

<图片在此处>

_dialogPlain

<图片在此处>

_dialogShadow (3)

_docNoGrow (4)

_dialogMovable (5)

_docZoom (6)

带边框的对话框窗口。 (9)

普通对话框窗口。

阴影对话框窗口。

没有增长框的文档窗口。

可移动的对话框窗口。

带有缩放框和滚动条空间的文档窗口。

<图片在此处>

_docRound (17)

圆角窗口。将 1 到 7 添加到此变体以增加角的圆度。

<图片在此处>

_WDEFbaseID (129)

带有关闭框的调色板窗口。您可以将常量 _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

华夏公益教科书