在系统菜单里添加菜单项和相应事件

有时候我们经常在程序中实现菜单项的重画,已有好多文章已经加以介绍,在此不再赘述。但是有时我们需要加新菜单项到系统菜单中,并希望给其增加相应的事件。笔者通过运用WindowAPI的AppendMenu函数和C++BUIDER的相关方法、属性,实现了往系统菜单中增加菜单项和事件。

下面介绍具体的实现方法,读者按照以下步骤操作,就可以实现在系统菜单中增加菜单项和事件:

1 首先创建一个新的空工程文件,存盘为project1.cpp和unit1.cpp。

2 使用菜单Tools中的Image Editor,打开资源文件project1,新建一个位图并取名为HELP。

3 在源文件头部定义如下常量作为菜单的标示:

#define IDM_HELP1   1

#define IDM_HELP2   2

#define IDM_REMOVE   3

#define IDM_SEPARATOR1 4

#define IDM_SEPARATOR2 5

4 为Form1创建OnCreate事件,添加代码实现在系统菜单里增加菜单项:

首先定义菜单句柄和位图句柄:

HMENU hMenu;

HBITMAP hBitmapHelp;

然后获得系统菜单的句柄:

hMenu = GetSystemMenu (this->Handle, FALSE) ;

往系统菜单中增加自己的菜单项:

AppendMenu (hMenu, MF_SEPARATOR,IDM_SEPARATOR1, NULL) ;

AppendMenu (hMenu, MF_STRING,IDM_HELP1,"帮助") ;

AppendMenu (hMenu, MF_SEPARATOR,IDM_SEPARATOR2, NULL) ;

AppendMenu (hMenu, MF_STRING,IDM_REMOVE,"取消菜单") ;

往菜单中添加位图,首先装载位图资源,获得其句柄,然后将它添加到系统菜单中:

hBitmapHelp =LoadBitmap ((void*)HInstance, "HELP");

AppendMenu (hMenu, MF_BITMAP,IDM_HELP2, (char*)hBitmapHelp);

时间: 2024-09-14 11:24:16

在系统菜单里添加菜单项和相应事件的相关文章

IE里的探索之向标准上下文相关菜单里添加条目

IE里的探索之向标准上下文相关菜单里添加条目(作者:青苹果工作室编译 2001年02月08日 13:28) 本文描述在Microsoft Internet Explorer中执行URL指定的脚本时,如何向它的标准上下文相关菜单中添加菜单项. 如果你想向 Internet Explorer 的标准上下文相关菜单中添加菜单项,那么你应该熟悉注册表以及上下文相关菜单.有关上下文相关菜单的详细内容,可以参阅 SDK 中关于 Windows Shell API 的文档. 这里讨论的实现方式对 Intern

VC 向windows系统菜单中添加菜单项---Windows shell扩展编程

vs2008的方法和vc6.0做法几乎一样.下面是转载一位新浪博客-丢丢的.   打开VC6,新建一个工程,选ATL COM APPWIZARD,工程名写BlogTest.然后OK.如果要用到MFC,那把Support MFC打上勾,然后按完成.     新工程生成完毕后,在Class View里根结点按右键,选New Atl Object...,再选Simple Object,在short name里填上类名(起的类型不要和工程名重了),我填Blog,其他会自动填写完毕,OK     在Blo

android-如何在系统settings里添加设置选项

版本:2.3.1 目的:在通话设置菜单下,添加一dect设置菜单,里面再添加一checkBOxPreference 来使能硬件模块. ------------------------- 目前做的项目,需要在系统settings里面添加一选项来使能硬件模块,里面涉及到的preference知识,请网上了解,这里记录下方法.  1,settings 应用一般在 目录:\packages\apps\Settings,我们先找到通话设置的布局位置,看看它在那个包路径下,进入\packages\apps\

我想在microsoft visual studio 2005 的菜单里新增一个项,请问使用的是什么方法

问题描述 比如我想在菜单"工具"里自己新增一个Item,该如何去实现?谢谢 解决方案 解决方案二:可以直接选中菜单栏的某选项,然后到属性的DropDownItems里面添加即可

grid里添加按钮,按钮的事件问题

问题描述 var tbar = new Ext.Toolbar({ //renderTo : Ext.ux.maximgb.tg.GridPanel.tbar,// 其中grid是上边创建的grid容器 items : [{ text : '添加', iconCls:'addBtn', handler: newPlanTask }, { xtype : "tbseparator" }, { text : '修改', iconCls : "editBtn", //图片

[Eclipse]GEF入门系列(六、添加菜单和工具条)

我发现一旦稍稍体会到GEF的妙处,就会很自然的被它吸引住.不仅是因为用它做出的图 形界面好看,更重要的是,UI中最复杂和细微的问题,在GEF的设计中无不被周到的考虑并以 适当的模式解决,当你了解了这些,完全可以把这些解决方法加以转换,用来解决其他领域 的设计问题.去年黄老大在一个GEF项目结束后,仍然没有放弃对它的继续研究,现在甚至利 用业余时间开发了基于GEF的SWT/JFace增强软件包,Eclipse和GEF的魅力可见一斑.我相信 在未来的两年里,由于RCP/GEF等技术的成熟,Java

WordPress导航菜单设置添加方法

wordpress3.0之前的版本是不支持导航菜单的,尽管如此很多3.0之前的 主题都集成了单导航菜单,但有些并没有导航菜单.而wodpress发展到3.0版本以后能够原生的支持导航菜单了,如果闲的蛋疼,那就修改一下自己的 主题,让它支持原生态的 wordpress导航菜单. 如果在 wordpress后台"外观/菜单"下看到"The current theme dose not natively support menus,but you can use the "

如何在IE右键菜单中添加菜单项

菜单|右键 如果使用过Netants的朋友可能都知道,NetAnts在IE中添加了右键菜单功能,只要在页面的一个链接或者图片上点击右键后在菜单中选择 Down By Netants 就可以调用Netants下载该链接指向的文件.在本文中作者将介绍如何通过VB来实现这样的功能. 要实现在IE右键菜单中添加菜单项的功能,要依次实现以下步骤: 1.在注册表HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt项下建立一个新项,项的名

XP系统右键怎么添加“复制/移动到文件夹”

  XP系统右键怎么添加"复制/移动到文件夹" 1.先打开"运行",输入"regedit",打开注册表. 2.在注册表编辑器中,依次打开HKEY_CLASSES_ROOTAllFilesystemObjectsshellexContextMenuHandlers,然后在该键值上点击鼠标右键,选择"新建→项"(如下图),并将项值命名为"{C2FBB630-2971-11D1-A18C-00C04FD75D13}&quo