跳轉到內容

Futurebasic/Language/Reference/menu 語句

來自華夏公益教科書,自由的教學材料

MENU 語句

[編輯 | 編輯原始碼]

建立或更改選單:MENU menuID, itemID, state [,string$]

取消選單欄的突出顯示:MENU

2002 年 2 月(6.0 版)

描述

使用此語句可執行以下任何操作

  • 在選單欄中新增新選單。
  • 啟用或停用選單。
  • 向現有選單新增新專案。
  • 啟用或停用選單項。
  • 在選單項中新增或刪除複選標記。
  • 更改選單項的文字。
  • 指定要附加到選單項的層次子選單
  • 取消選單欄的突出顯示。

要向選單欄新增新選單

  • menuID 引數設定為現有選單未使用的數字。使用 1 到 31 之間的數字。
  • itemID 引數設定為零。
  • state 引數設定為 _enable_disable,具體取決於您希望選單最初是啟用還是變暗(您可以稍後更改此狀態)。
  • string$ 引數設定為您希望作為新選單標題顯示的文字。

這將建立一個新的空選單(請參閱以下內容,瞭解如何向選單新增專案)。您為 menuID 選擇的值將確定新選單在選單欄中的位置;選單會根據其 menuID 編號的升序從左到右自動定位。幾乎總是,您會希望為選單分配從 1 開始的連續編號。

要啟用或停用(變暗)現有選單

  • menuID 引數設定為現有選單的 ID 編號。
  • itemID 引數設定為零。
  • 將 state 引數設定為 _enable_disable
  • 不要指定 string$ 引數(如果您指定,所有選單項都會消失!)

要向現有選單新增新專案

  • menuID 引數設定為現有選單的 ID 編號。
  • itemID 引數設定為選單中任何其他項未使用的正數。此數字決定了專案在選單中的位置;專案從上到下連續編號,從 1 開始。如果您“跳過”專案,則將顯示空白或灰色分隔線,具體取決於您使用的是哪個版本的系統軟體。請注意,專案之間的灰色分隔線有其自己的專案 ID 編號。您可以透過在 string$ 引數中使用元字元“-”來建立灰色分隔線。
  • state 引數設定為 _enable_disable_checked,具體取決於您希望專案的初始狀態是什麼(您可以稍後更改此狀態)。
  • string$ 引數設定為您希望在專案中顯示的文字。請注意,當您新增新專案時,string$ 中的某些特殊字元不會出現在專案文字中,但具有其他特殊含義。請參閱下面的“元字元”表。

要啟用、停用(變暗)或選中現有專案

  • menuIDitemID 引數設定為現有選單中的現有專案。
  • state 引數設定為 _enable_disable_checked。請注意,將 state 設定為 _enable_disable 將刪除專案上任何現有的複選標記。

要更改現有專案的文字

  • menuIDitemID 引數設定為現有選單中的現有專案。
  • string$ 引數設定為所需的文字。請注意,當您更改現有專案的文字時,string$ 中的所有字元都將出現在專案文字中,並且沒有字元會被解釋為“元字元”。

要指定要附加到選單項的層次子選單

  • menuID 引數設定為現有選單的 ID 編號;這是將包含子選單的“父”選單。
  • itemID 引數設定為選單中任何其他項未使用的正數。這是子選單將附加到的“父”專案。
  • state 引數設定為子選單的 ID 編號。這應該是一個 32 到 235 之間的數字,它沒有被任何其他選單使用。
  • string$ 引數設定為以這兩個字元結尾的字串:"/" + CHR$(&1B)

注意:上述過程將子選單附加到父選單項,但它不會安裝子選單。要安裝子選單,您還需要呼叫 Toolbox 過程 InsertMenu。請參閱下面的示例。

要取消選單欄的突出顯示

  • 執行 MENU 語句,不帶任何引數。每當使用者選擇選單項時,選單欄都會自動突出顯示,並且在您的程式取消突出顯示它之前,它會保持突出顯示狀態。透過取消突出顯示選單欄,您的程式讓使用者知道與該選單項關聯的操作已完成。

元字元 此表中的字元在您新增新選單項時,在 string$ 引數中出現時具有特殊含義。請注意,當您更改現有專案的文字時,string$ 中的所有字元都將出現在專案文字中,並且沒有字元會被解釋為元字元。此規則的例外情況是以減號開頭的字串。減號是大多數選單定義用來繪製分隔線的標誌。如果您的專案需要包含減號,您可以透過在字元前放置一個空格來正確顯示專案。

IMAGE WAS HERE

建立層次選單 您可以使用以下函式新增新的選單項並將新的層次選單附加到它。您應該將 childMenuID 設定為 32 到 235 之間的某個數字,該數字沒有被任何現有選單使用。

LOCAL FN MakeHierMenu(parentMenuID,parentMenuItem,¬     itemString$,childMenuID)

  title$ = "!"+chr$(childMenuID)+itemString$ + "/" + CHR$(&1B)
  MENU parentMenuID,parentMenuItem,,title$   CALL INSERTMENU(FN NEWMENU(childMenuID,""), -1)

END FN

在您呼叫 FN MakeHierMenu 之後,您可以使用 MENU 語句向層次選單新增新專案(將 menuID 引數設定為 childMenuID 的值)。

Apple 選單中的專案 您應該使用 APPLE MENU 語句在 Apple 選單的頂部新增專案。在新增這些專案後,您可以使用 MENU 語句(將 menuID 引數設定為 _appleMenu)來更改專案(例如,啟用或變暗它們)。

幫助選單中的專案 您可以透過獲取幫助選單的控制代碼,然後呼叫 AppendMenu 過程,在幫助選單的底部新增專案。您還需要找出第一個幫助專案的專案編號,供選單事件處理程式使用(任何現有專案都由幫助管理器處理)

DIM AS INT OSErr, @ firstCustomHelpItem
DIM AS HANDLE @ hmHandle

#IF carbonlib
   OSErr = FN HMGETHELPMENU(hmHandle, firstCustomHelpItem)
#ELSE
   OSErr = FN HMGETHELPMENUHANDLE(hmHandle)
   firstCustomHelpItem = FN COUNTMITEMS(hmHandle)+1
#ENDIF

CALL APPENDMENU(hmHandle, "我的幫助")

在向幫助選單新增專案後,您可以使用 MENU 語句(將 menuID 引數設定為 _kHMHelpMenuID)來更改專案。

注意: 不要使用 MENU 語句向幫助選單新增新專案;而應使用 AppendMenu

刪除選單 呼叫 DeleteMenu 過程刪除由 MENU 語句建立的選單

CALL DELETEMENU(menuID)

這可能會導致選單欄中的其他菜單向左滑動以填補空白;但是,它們仍然保留其原始選單 ID 編號。

刪除選單項 要刪除您建立的選單中的所有專案,請使用 MENU 語句,在 itemID 引數中指定零,並在 string$ 引數中指定選單標題。

要刪除單個專案,請使用 GetMHandle 函式和 DelMenuItem 過程

CALL DELMENUITEM(FN GETMHANDLE(menuID), itemID)

請注意,這將重新編號已刪除專案下方的任何專案,因為它們會向上移動以填補空白。選單項編號始終從 1 開始連續編號。

示例: 以下行建立一個完整的選單,其中還包含一個層次選單。此示例使用上面定義的 MakeHierMenu 函式。

MENU 3,0,_enable,"遊戲" MENU 3,1,_enable,"檢視高分/H" MENU 3,2,_enable,"重置高分/R" MENU 3,3,_disable,"-" FN MakeHierMenu(3,4,"情景",100) '層次選單中的專案: MENU 100,1,_checked,"級別 1" MENU 100,2,_enable,"級別 2" MENU 100,3,_enable,"級別 3" '需要兩個 MENU 語句才能包含 '像“!”這樣的特殊字元: MENU 3,5,_enable,"dummy"   '這添加了專案 MENU 3,5,_enable,"立即玩!"   '這改變了專案

IMAGE WAS HERE

上下文選單 大約在外觀管理器出現的時候,程式設計師開始使用上下文選單。當用戶按住 Control 鍵並在視窗的特定區域單擊時,上下文選單就會出現。當發生這種型別的操作時,您將收到(僅外觀管理器執行時)一個 DIALOG(0) 訊息 _cntxtMenuClickDIALOG(_cntxtMenuClick) 將是視窗的視窗編號。此時,您可能需要透過在游標下方顯示選單來做出反應。

IMAGE WAS HERE

以下函式構建並顯示選單,並可能在響應上下文選單單擊時被呼叫。

本地函式 DoContextMenu( wNum 作為 長整型 )   宣告 @ selectionType 作為 長整型   宣告 @ menuID 作為 短整型   宣告 @ menuItem 作為 短整型   宣告 mHndl 作為 控制代碼   宣告 err 作為 作業系統狀態   宣告 helpItemString 作為 字串255   mHndl = 函式 NEWMENU(255, "X")   長整型 如果 mHndl     插入選單( mHndl, -1 )     追加選單( mHndl, ¬       "上下文選單單擊視窗" + 字串$( wNum ) )     helpItemString = "我的自定義幫助"     err = 函式 CONTEXTUALMENUSELECT( mHndl, ¬       #gFBTheEvent.where, _nil, _kCMHelpItemNoHelp, ¬       @helpItemString, #_nil, @selectionType, ¬       @menuID, @menuItem )     /*     在這個函式中,我們實際上沒有對返回的     selectionType、menuID 或 menuItem 做任何處理,但我們可以     在這裡對它做出反應     */     釋放選單( mHndl )   結束 如果 結束 函式

另請參閱

[編輯 | 編輯原始碼]

選單;選單函式;ON MENU FN;蘋果選單;DEF CHECKONEITEM

華夏公益教科書