我正在为我工作的公司制作一个应用程序,我想知道如何自定义窗口的上下文菜单,如 PuTTY 的(又名,它有“新会话......”等)。我在谷歌上找遍了,找不到我要找的答案。
问问题
1632 次
1 回答
2
制作一个新模块并添加Imports System.Runtime.InteropServices
到顶部
然后声明这个
<Flags()> _
Public Enum MenuFlags As Integer
MF_BYPOSITION = 1024
MF_REMOVE = 4096
MF_SEPARATOR = 2048
MF_STRING = 0
End Enum
<DllImport("user32.dll", CallingConvention:=CallingConvention.Cdecl)> _
Public Function GetSystemMenu(ByVal hWnd As IntPtr, Optional ByVal bRevert As Boolean = False) As IntPtr
End Function
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Function AppendMenu(ByVal hMenu As IntPtr, ByVal uFlags As MenuFlags, ByVal uIDNewItem As Int32, ByVal lpNewItem As String) As Boolean
End Function
然后在您的表单加载处理程序上添加此代码
Dim sysmenu As IntPtr = GetSystemMenu(Me.Handle)
AppendMenu(sysmenu, MenuFlags.MF_STRING, &H1FFF, "Hello")
然后,为了能够捕获用户单击您的新菜单项,您必须实现此功能,该功能将捕获所有消息,只需将其添加到您的表单代码中
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = WM_SYSCOMMAND Then
If m.WParam.ToInt32 = &H1FFF Then
' your menu item is clicked, call a function here
End If
End If
MyBase.WndProc(m)
End Sub
于 2012-08-08T23:53:00.630 回答