菜单编辑器 (C++)
使用菜单,可以按照逻辑方式和易于查找的方式排列命令。 使用“菜单编辑器”,可以通过直接使用与已完成应用程序中非常相似的菜单栏来创建和编辑菜单。
提示
使用“菜单编辑器”时,在许多情况下,可以单击鼠标右键以显示常用命令的弹出菜单。 可用命令取决于指针所指向的内容。
操作方式
使用“菜单编辑器”,可以执行以下操作:
创建标准菜单
转到菜单“视图”>“资源视图”或“视图”>“其他 Windows”>“资源视图”,然后右键单击“菜单”标题。 选择“添加资源”,然后选择“菜单”。
选择菜单栏上的“新建项”框(包含“请在此处键入”的矩形)。
“新建项”框键入新菜单的名称,例如“文件”。
键入的文本将同时出现在“菜单编辑器”以及属性窗口中的“标题”框中。 你可以在任一位置编辑新菜单的属性。
为菜单栏上的新菜单指定名称后,新项框移到右边(让你可以添加其他菜单)。 此时另一个新项框在第一个菜单下面打开,你可以向其中添加菜单命令。
“新建项”框,焦点在你键入菜单名称后转移注意
要在菜单栏上创建单项菜单,请将“弹出”属性设置为 False。
创建子菜单
选择你想要创建子菜单的菜单命令。
在出现在右侧的 新项 框显中键入新的菜单命令的名称。 此新命令将在子菜单的菜单中显示为第一个。
将更多菜单命令添加到子菜单的菜单中。
在现有菜单之间插入新菜单
选择现有菜单名称,然后按 Insert 键,或右键单击菜单栏,然后选择“插入新菜单”。
此时选定项前面插入了“新建项”框。
将命令添加到菜单
创建菜单。 然后选择菜单名称,例如“文件”。
每个菜单都将展开,并显示一个新项框让你输入命令。 例如,可以将“新建”、“打开”和“关闭”命令添加到“文件”菜单中。
在新项框中,键入新菜单命令的名称。
注意
键入的文本将同时出现在“菜单编辑器”以及属性窗口中的“标题”框中。 你可以在任一位置编辑新菜单的属性。
提示
你可以定义一个允许用户选择菜单命令的助记键(热键)。 在字母前面键入与号 (
&
),将它指定为助记键。 用户可以通过键入该字母来选择菜单命令。在“属性”窗口中,选择适用的菜单命令属性。 有关详细信息,请参阅菜单命令属性。
在“属性”窗口的“提示”框中,键入你希望显示在应用程序状态栏中的提示字符串。
此步骤将在字符串表中创建一个条目,该条目的资源标识符与你创建的菜单命令相同。
注意
提示只能适用于“弹出窗口”属性为“True”的菜单项。 例如,包含子菜单项的顶级菜单项可以有提示。 提示的目的是告诉用户在选择菜单项时会发生什么。
按“Enter”完成菜单命令。
此时会选定新项框,让你可以创建更多菜单命令。
选择多个菜单命令以运行删除或更改属性等批量操作
按住 Ctrl 键的同时,选择你需要的菜单或子菜单命令。
移动和复制菜单和菜单命令
使用拖放方法:
拖动或复制要移到下列位置的项:
当前菜单上的新位置。
不同的菜单。 可以通过在其他菜单上拖动鼠标指针来导航到这些菜单。
当插入参考线显示所需位置时放下菜单命令。
使用快捷菜单命令:
右键单击一个或多个菜单或菜单命令,然后选择“剪切”(以移动)或“复制”。
如果将项移动到另一个菜单资源或资源脚本文件,可以在其他窗口中打开它。
选择要将菜单或菜单命令移动或复制到的位置。
从快捷菜单中选择 “粘贴”。 被移动或复制的项放在选定项的前面。
注意
还可以拖动、复制和粘贴到其他菜单窗口中的其他菜单中。
若要删除菜单或菜单命令
右键单击菜单名称或命令,然后选择“删除”。
注意
同样,可以使用快捷菜单来执行其他操作,例如,复制、剪切、粘贴、插入新项、插入分隔符、编辑 ID、以弹出方式查看、检查助记键等。
弹出菜单
弹出菜单 显示常用命令。 它们对指针的位置可以区分上下文。 在应用程序中使用弹出菜单需要先生成菜单,然后将菜单连接到应用程序代码。
当你创建菜单资源后,应用程序代码需要加载该菜单资源,并使用 TrackPopupMenu 显示该菜单。 用户通过单击选择菜单之外的位置关闭弹出菜单后,或用户选择某个命令后,该函数将返回。 如果用户选择一个命令,该命令消息将被发送到传递了其句柄的窗口。
若要创建弹出菜单,请创建一个标题为空且不提供描述文字的菜单。 然后,将菜单命令添加到新菜单。 移动到空白菜单标题下方的第一个菜单命令(它具有临时标题“在此处键入”),然后键入“描述文字”和任何其他信息。
对弹出菜单中的任何其他菜单命令重复此过程,并确保保存菜单资源。
若要将弹出菜单连接到应用程序,例如,为 WM_CONTEXTMENU 添加消息处理程序,将以下代码添加到消息处理程序:
CMenu menu; VERIFY(menu.LoadMenu(IDR_MENU1)); CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd());
注意
消息处理程序传递的 CPoint 位于屏幕坐标中。
通常情况下,当你在“菜单编辑器”中工作时,菜单资源将作为菜单栏显示。 但是,你可能拥有在程序运行时添加到应用程序菜单栏的菜单资源。
若要以弹出菜单的形式查看菜单资源,请右键单击菜单,然后选择“以弹出方式查看”。
此选项只是一个查看首选项,不会修改你的菜单。
提示
要改回菜单栏视图,请再次选择“以弹出方式查看”。 此操作将删除复选标记,并返回菜单栏视图。
要求
Win32