跳轉到內容

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

華夏公益教科書