65.9K
CodeProject 正在变化。 阅读更多。
Home

VB.NET/WinForms:向系统菜单添加菜单项

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2022年12月13日

CPOL
viewsIcon

10029

downloadIcon

134

将上下文菜单的菜单项添加到Windows Forms应用程序中窗体的系统菜单

引言

为什么我们需要使用菜单项添加到系统菜单
菜单项拥有自己的事件,并且易于用于调用我们的命令语句。

背景

使用API函数向系统菜单添加菜单项:GetSystemMenu API函数获取窗体系统菜单的句柄 - GetMenuItemID API函数获取上下文菜单的菜单项ID,以及InsertMenu API函数系统菜单中插入菜单项

Using the Code

在窗体的通用声明中使用API函数

GetSystemMenu API函数

Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (
  ByVal hwnd As Long,
  ByVal bRevert As Boolean) As Long 

GetMenuItemID API函数

 Declare Function GetMenuItemID Lib "user32" (
                   hMenu As Long,
                   nPos As Integer) As Integer

InsertMenu API函数

 Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" (
    ByVal hMenu As Long,
    ByVal nPosition As Long,
    ByVal wFlags As Long,
    ByVal wIDNewItem As Long,
    ByVal lpNewItem As String) As Long

首先,您需要在您的窗体中添加一个上下文菜单组件

创建一个新的菜单项(例如,关于菜单项

然后,将一个“关于框”添加到项目中

获取系统菜单句柄

Dim SysMenu As Long = GetSystemMenu(Me.Handle.ToInt64, False) 

获取菜单项ID

Dim hMenuItem As Long = GetMenuItemID(MenuItem1.Parent.Handle.ToInt64, MenuItem1.Index) 

菜单项插入到窗体系统菜单

InsertMenu(SysMenu, 0, &H0&, hMenuItem, MenuItem1.Text) 

将上述语句添加到窗体Load事件中

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
      Dim SysMenu As Long = GetSystemMenu(Me.Handle.ToInt64, False)
      Dim hMenuItem As Long = _
          GetMenuItemID(MenuItem1.Parent.Handle.ToInt64, MenuItem1.Index)
      InsertMenu(SysMenu, 0, &H0&, hMenuItem, MenuItem1.Text)
    End Sub 

双击上下文菜单菜单项以编写如下命令语句

    Private Sub MenuItem1_Click(sender As Object, e As EventArgs) Handles MenuItem1.Click
      Dim AboutBox As New AboutBox1
      AboutBox.Show(Me)
    End Sub 

历史

  • 2022年12月13日:初始版本
© . All rights reserved.