跳转到内容

Futurebasic/语言/参考/菜单函数

来自维基教科书,自由的教科书

MENU 函数

[编辑 | 编辑源代码]

selectedMenu = MENU(_menuID) selectedItem = MENU(_itemID)

2001 年 1 月 2 日(第 4 版)

如果您的程序中指定了菜单事件处理例程(使用 ON MENU 语句),那么 MENU(_menuID) 返回菜单编号,而 MENU(_itemID) 返回用户最近选择的菜单项的项目编号。您的菜单事件处理例程应该在每次调用时检查这些值。

为了让用户持续访问菜单栏,您的程序应该定期执行 HANDLEEVENTSHANDLEEVENTS 检查菜单栏上的最近点击,并通过打开菜单并跟踪鼠标的移动来响应。最后,如果用户选择了菜单项,HANDLEEVENTS 将调用您的菜单事件处理函数。

菜单编号 除苹果菜单、帮助菜单和应用程序菜单外,菜单栏上的菜单按从左到右的顺序递增编号。在大多数情况下,它们将从 1 开始连续编号。您使用 MENU 语句将菜单编号分配给程序创建的菜单。

苹果菜单的编号等于常量 _AppleMenu。如果您的程序在苹果菜单中添加了新项目,则 MENU 函数可以检测到用户何时选择了这些项目。苹果菜单中的其他项目由 Finder 处理,您的程序无法检测到用户何时选择了这些项目。您使用 APPLE MENU 语句在苹果菜单中添加项目。(注意:如果您在 MBAR 资源中创建了苹果菜单,则使用常量 _AppleResMenu 而不是 _AppleMenu。)

帮助菜单的编号等于常量 _kHMHelpMenuID。如果您的程序在帮助菜单中添加了新项目,则 MENU 函数可以检测到用户何时选择了这些项目。帮助菜单中的其他项目由帮助管理器处理,您的程序无法检测到用户何时选择了这些项目。要向帮助菜单添加新项目,请使用 Toolbox 例程 HMGetMenuHandle 和 AppendMenu(请参阅 MENU 语句,了解如何执行此操作的示例)。

您的程序无法直接检测到应用程序菜单中选择的项目;这是由 Finder 处理的。但是,您的程序可以检测到何时将另一个应用程序置于最前面。有关详细信息,请参阅 DIALOG 函数。

您的程序还可以检测到弹出层次菜单的父项何时被选中。这是由名为 UserFloatPrefs 的文件中的一个常量打开和关闭的,该文件位于用户库文件夹中。启用此功能的一个(不希望的)副作用是,通过将标题设置为禁用状态而变灰的菜单将在非活动项目中生成菜单事件。要使用旧方法(这是默认状态)忽略层次项目,请注释掉该行中的内容...

_FBEnableMenuChoice = _zTrue

要启用新功能,请删除注释并允许定义该常量。此声明位于名为 UserFloatPrefs 的文件中,该文件位于用户库文件夹中。

层次菜单有自己的菜单编号,与它们的“父”菜单编号不同。您可以使用 MENU 函数来检测程序创建的层次菜单中的选择。

弹出菜单被认为是窗口控件(如按钮),因此 MENU 函数无法检测到它们。

项目编号 菜单项从上到下连续编号,从 1 开始。请注意,项目之间的灰色分隔线有自己的项目编号,即使它不能被选中。在分配和解释项目编号时,务必记住这一点。层次菜单中的项目也是从 1 开始连续编号的。

图像曾在此处

另请参阅

[编辑 | 编辑源代码]

MENU 语句;APPLE MENU;HANDLEEVENTS;ON MENU

华夏公益教科书