中关村在线

软件

Delphi系统菜单增删项技巧

通过调用Windows API函数GetSystemMenu获取窗口系统菜单的句柄,再结合AppendMenu和DeleteMenu函数,可在Delphi中实现对系统菜单项的动态添加与删除操作,从而自定义窗口的系统菜单内容,提升程序界面的灵活性和用户交互体验。

1、 启动Delphi7,新建工程,系统自动创建的窗体默认名称为Form1。

2、 在Form1的对象检查器中,切换到事件选项卡,双击OnCreate事件以生成相应的处理方法,该方法会在窗体创建时自动执行。

3、 在OnCreate函数内插入相应代码段。

4、 var

5、 添加菜单项:在指定位置插入一个文本为我建的系统菜单(E)的菜单,关联标识符1001。

6、 阐述一下:

7、 参数详解

8、 hWnd:目标窗口的句柄,用于获取其系统菜单句柄。

9、 是否恢复原始菜单设置。

10、 返回一个类型为HMENU的菜单句柄。

11、 第一个参数是当前窗口的句柄,也就是Form1的句柄。

12、 保留原菜单,不作任何修改。

13、 获取窗口系统菜单句柄h后,调用appendmenu方法添加菜单项。

14、 参数详情

15、 hMenu:通过GetSystemMenu函数获取的系统菜单句柄。

16、 若uFlag包含mf_string常数,则lpnewitem参数所指向的内容为一个字符串。

17、 新菜单项的标识符。

18、 菜单类型由lpNewItem参数指定。

19、 通过appendmenu方法,先插入一条分割线,随后添加一个ID为1001的菜单项,名称为我建的系统菜单(&E)。

20、 按F9运行程序,在系统标题处右键单击,弹出的菜单末尾即为新增选项。

21、 在TForm1类的private部分为新增系统菜单项添加点击事件响应方法

22、 该函数接收菜单选择类型作为参数。

23、 将鼠标光标移至函数声明处,按下Ctrl+Shift+C即可生成函数体,随后在其中编写所需代码。

24、 当消息的IDItem等于1001时,显示提示你选择了自己添加的菜单!,否则执行继承的默认操作。该逻辑用于判断用户是否点击了自定义菜单项,并作出相应响应。

25、 按F9启动程序,右键点击系统标题栏,从弹出菜单中选择末尾新增选项,即可显示对话框。

26、 返回Form1窗体,向其中添加一个按钮控件。

27、 双击新添加的按钮Button1,进入其单击事件处理函数Button1Click(Sender: TObject);在函数体内编写相应的执行代码。

28、 var

29、 说明一下:

30、 首先获取Form1窗体的系统菜单句柄。

31、 hMenu 长整型,表示菜单的句柄

32、 nPosition为长整型,表示待删除菜单项的标识。若wFlags中包含MF_BYCOMMAND标志,则该参数指明目标菜单项的命令ID。

33、 长整型参数wFlags,可取值为MF_BYPOSITION或MF_BYCOMMAND。

34、 新增菜单默认采用MF_BYCOMMAND方式,其唯一标识为1001,因此最终参数设置为MF_BYCOMMAND。

35、 运行F9启动程序,点击Button1后,再查看系统菜单,会发现之前添加的菜单项已消失。

展开全文
人赞过该文
内容纠错

相关电商优惠

评论

更多评论
还没有人评论~ 快来抢沙发吧~

读过此文的还读过

点击加载更多

内容相关产品

说点什么吧~ 0

发评论,赚金豆

收藏 0 分享
首页查报价问答论坛下载手机笔记本游戏硬件数码影音家用电器办公打印 更多

更多频道

频道导航
辅助工具