Welcome

首页 / 软件开发 / C++ / 在系统菜单里添加菜单项和相应事件

在系统菜单里添加菜单项和相应事件2008-01-05有时候我们经常在程序中实现菜单项的重画,已有好多文章已经加以介绍,在此不再赘述。但是有时我们需要加新菜单项到菜单中,并希望给其增加相应的事件。笔者通过运用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);