C++ 怎么实现上下文菜单

我想对文件右击的时候弹出的菜单中添加一项。
但是不知道怎么做,知道的可以百度HI我,谢谢了。先给30.如果我能实现了,再加100

1.使用 工具 -> 菜单编辑器 ,打开[菜单编辑器]
2.使用[菜单编辑器]创建一个菜单(下面是一个例子,列表框里的内容)
A1
...Menu1
...Menu2
...- <- 这是一个分隔符
...Options
......P1
......P2
3.把主菜单(例子上面的 A1)设为隐藏
4.在按钮的单击代码里输入:
PopupMenu [主菜单的名字]
例如:
PopupMenu MnuMain1

MSDN ===========================
“菜单编辑器”对话框

使用菜单编辑器可以为应用程序创建自定义菜单并定义其属性。

对话框选项
“标题”
使用该选项可以输入菜单名或命令名,这些名字出现在菜单条或菜单之中。
如果想在菜单中建立分隔符条,则应在Caption 框中键入一个连字符 (-)。
为了能够通过键盘访问菜单项,可在一个字母前插入 & 符号。在运行时,该字母带有下划线(& 符号是不可见的),按 ALT 键和该字母就可访问菜单或命令。如果要在菜单中显示 & 符号,则应在标题中连续输入两个 & 符号。

“名称”
允许为菜单项输入控件名。控件名是标识符,仅用于访问代码中的菜单项;它不会出现在菜单中。

“索引”
可指定一个数字值来确定控件在控件数组中的位置。该位置与控件的屏幕位置无关。

“快捷键”
允许为每个命令选定快捷键。

“帮助上下文 ID”
允许为 context ID 指定唯一数值。在 HelpFile 属性指定的帮助文件中用该数值查找适当的帮助主题。

“协调位置”
允许选择菜单的 NegotiatePosition 属性。该属性决定是否及如何在容器窗体中显示菜单。

“复选”
允许在菜单项的左边设置复选标记。通常用它来指出切换选项的开关状态。

“激活的”
由此选项可决定是否让菜单项对事件做出响应,而如果希望该项失效并模糊显示出来,则也可清除事件。

“可视的”
将菜单项显示在菜单上。

“显示窗口列表”
在 MDI 应用程序中,确定菜单控件是否包含一个打开的 MDI 子窗体列表。

“右箭头”
每次单击都把选定的菜单向右移一个等级。一共可以创建四个子菜单等级。

“左箭头”
每次单击都把选定的菜单向上移一个等级。一共可以创建四个子菜单等级。

“上箭头”
每次单击都把选定的菜单项在同级菜单内向上移动一个位置。

“下箭头”
每次单击都把选定的菜单项在同级菜单内向下移动一个位置。

“菜单列表”
该列表框显示菜单项的分级列表。将子菜单项缩进以指出它们的分级位置或等级。

“下一个”
将选定移动到下一行。

“插入”
在列表框的当前选定行上方插入一行。

“删除”
删除当前选定行。

“确定”
关闭菜单编辑器,并对选定的最后一个窗体进行修改。菜单可以在设计时使用,但在设计时可以通过选定一个菜单,来打开菜单单击事件的“代码”窗口,而不是执行事件代码。

“取消”
关闭菜单编辑器,取消所有修改。

======================================
PopupMenu 方法

用以在 MDIForm 或 Form 对象上的当前鼠标位置或指定的坐标位置显示弹出式菜单。不支持命名参数。

语法

object.PopupMenu menuname, flags, x, y, boldcommand

PopupMenu 方法的语法包含下列部分:

object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,则带有焦点的 Form 对象缺省为 object。
Menuname 必需的。要显示的弹出式菜单名。指定的菜单必须含有至少一个子菜单。
Flags 可选的。一个数值或常数,按照下列设置中的描述,用以指定弹出式菜单的位置和行为。
X 可选的。指定显示弹出式菜单的 x 坐标。如果该参数省略,则使用鼠标的坐标。
Y 可选的。指定显示弹出式菜单的 y 坐标。如果该参数省略,则使用鼠标的坐标。
boldcommand 可选的。指定弹出式菜单中的菜单控件的名字,用以显示其黑体正文标题。如果该参数省略,则弹出式菜单中没有以黑体字出现的控件。

设置值

用于 flag 的设置值有:

vbPopupMenuLeftAlign (0)(缺省值)。弹出式菜单的左边定位于 x。
vbPopupMenuCenterAlign (4) 弹出式菜单的于 x 居中位。
vbPopupMenuRightAlign (8) 弹出式菜单的右边定位于 x。

vbPopupMenuLeftButton (0)(缺省值)。 仅当使用鼠标左按钮时, 弹出式菜单中的项目才响应鼠标单击。
vbPopupMenuRightButton (2) 不论使用鼠标右按钮还是左按钮, 弹出式菜单中的项目都响应鼠标单击。

说明

上述常数在对象浏览器中的 Visual Basic (VB) 对象库里列出。

可使用 ScaleMode 属性指定x和y坐标的度量单位。x 和 y 坐标定义弹出式菜单相对于指定窗体显示的位置。如果没有包括 x 和 y 坐标,则弹出式菜单就显示在鼠标指针当前的位置。

在显示弹出式菜单时,调用 PopupMenu 方法后面的代码直到用户或者从菜单中选择了命令(这时,该命令的 Click 事件的代码比 PopupMenu 语句后面的代码先执行)或者取消该菜单时才能执行。此外,每次只能显示一个弹出式菜单,因此,如果已经显示了一个弹出式菜单或打开了一个下拉式菜单时,该方法的其它调用将被忽略
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-31
可以通过C++操作注册表来实现 ,c++对注册表的操作网上应该有,也很简单
如何修改注册表:下面是网友的博客中的参考下 是一样的道理
----当您在Windows[url=]桌面[/url]单击[url=]鼠标[/url]右键,选择“新建”来建立快捷方式或文件夹时,除了快捷方式与文件夹这2个选项之外,还有一个很长的文件菜单,包含了电脑中安装的一些应用软件,您可以很容易地建立文件列表中所包含类型的新文件。我们在这里向您介绍如何通过修改注册表来定制鼠标右键快捷菜单中的“新建”菜单所包含的项目。 需要注意的是,在修改注册表以前请先将注册表[url=]备份[/url],以免出现问题时无法恢复。
一、增加菜单项目
----1.首先,决定您要增加到菜单中的文件类型,以及启动这类文件的应用程序。如果是某些在启动时会自动打开的新文件或让您可以立即使用的应用程序,如[url=]记事本[/url]、[url=]写字板[/url]或画图等,就不需要特别的准备工作。但如果是在启动时不会自动打开文件的应用程序,您必须依需求建立一个通用的文件范本,并将它保存在Windows中的ShellNew文件夹中。此文件夹在某些系统中是隐藏的,所以您可能必须先选择“查看”*“文件夹选项”,在“查看”选项卡中选取“显示所有文件”选项,单击“确定”即可。
----2.选择“开始”*“运行”,输入“regedit”,打开注册表编辑器。单击 “HKEY_CLASSES_ROOT”旁边的“+”号,可以看到左边窗口中有一排文件夹,都是以Windows中应用程序建立的文件的后缀名命名的(如.doc、.xls和.html等)。找出您要增加到“新建”菜单中的文件类型的后缀名,单击鼠标右键,选择“新建”*“主键”(在注册表中,每个文件夹都是一个主键),将新的主键取名为“ShellNew”。选取新建的主键,在右边视窗空白处单击鼠标右键,选择“新增”*“字符串值”。如果您使用的文件类型,其程序预设为在启动时打开空白文件,就将新字符串名称设定为“NullFile”; 如果您使用的文件类型,其程序在启动时不会自动打开空白文件的话,请将新字符串名称设定为“FileName”。双击“FileName”字符串图标(或选中后按Enter键),在“编辑字符串”对话框的“键值”文本框中输入文件类型范本的完整路径及名称。然后按确定,退出注册表编辑器。您可以立刻在“新建”菜单的文件列表中看到所做的修改。
例一

以添加Word为例
1.选择“开始”*“运行”,输入“regedit”,打开注册表编辑器。
2.单击 “HKEY_CLASSES_ROOT”旁边的“+”号,找到后缀为.doc 单击鼠标右键,选择“新建”*“项”(在注册表中,每个文件夹都是一个主项),将新的主键取名为“ShellNew”。
3在右边视窗空白处单击鼠标右键,选择“新增”*“字符串值”。将新字符串名称设定为“NullFile
4.双击“FileName”字符串图标(或选中后按Enter键),在“编辑字符串”对话框的“键值”文本框中输入文件类型范本的完整路径及名称。如我自己的路径是C:\Program Files\Microsoft Office\OFFICE11\Winword
5.然后就可以马上在桌面右击菜单中看到新建Word.

例二
----以下是一个范例,要在桌面上或在文件夹中按右键建立新的Outlook Express 邮件。启动Outlook Express,选择“文件”*“新建”*“邮件”,再加入要放在邮件中的文字,然后选取“文件”*“另存为”,将邮件以“blank”的名称保存在\\Windows\\ShellNew文件夹中,Outlook Express 会自动为邮件加上.eml扩展名。接下来,依照前面的说明启动注册表编辑器,在HKEY_CLASSES_ROOT中找出.eml的文件夹,建立“ShellNew”主键,在此主键中新建一个字符串值,并将其名称设定为“FileName”。双击“FileName”字符串,在“编辑字符串”对话框的“键值”文本框中输入“C:\\Windows\\ShellNew\\blank.eml”(您可以自行设定路径和名称)。按下“确定”按钮,退出注册表编辑器即可。此时,您可以在桌面上按鼠标右键,选择“新建”*“Outlook Express Mail Message”(如附图所示)。桌面上就会出现一个新邮件图标,输入新邮件文件的名称并按下Enter键。双击新邮件的图标,输入邮件内容,完成之后,按下“发送”按钮即可。这一方法可用来建立电子邮件,并将邮件副本保存在Outlook Express(或其他类似的邮件程序)之外。
相似回答