自定义标题栏右键菜单
Posted 皮特胖胖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义标题栏右键菜单相关的知识,希望对你有一定的参考价值。
摘自:http://stackoverflow.com/questions/4615940/how-can-i-customize-the-system-menu-of-a-windows-form
在单击窗体左上角图标,或标题栏右击时,显示自定义菜单
Imports System.Windows.Forms Imports System.Runtime.InteropServices Public Class CustomForm Inherits Form \' P/Invoke constants Private Const WM_SYSCOMMAND As Integer = &H112 Private Const MF_STRING As Integer = &H0 Private Const MF_SEPARATOR As Integer = &H800 \' P/Invoke declarations <DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> Private Shared Function GetSystemMenu(hWnd As IntPtr, bRevert As Boolean) As IntPtr End Function <DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> Private Shared Function AppendMenu(hMenu As IntPtr, uFlags As Integer, uIDNewItem As Integer, lpNewItem As String) As Boolean End Function <DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> Private Shared Function InsertMenu(hMenu As IntPtr, uPosition As Integer, uFlags As Integer, uIDNewItem As Integer, lpNewItem As String) As Boolean End Function \' ID for the About item on the system menu Private SYSMENU_ABOUT_ID As Integer = &H1 Public Sub New() End Sub Protected Overrides Sub OnHandleCreated(e As EventArgs) MyBase.OnHandleCreated(e) \' Get a handle to a copy of this form\'s system (window) menu Dim hSysMenu As IntPtr = GetSystemMenu(Me.Handle, False) \' Add a separator AppendMenu(hSysMenu, MF_SEPARATOR, 0, String.Empty) \' Add the About menu item AppendMenu(hSysMenu, MF_STRING, SYSMENU_ABOUT_ID, "&About…") End Sub Protected Overrides Sub WndProc(ByRef m As Message) MyBase.WndProc(m) \' Test if the About item was selected from the system menu If m.Msg = WM_SYSCOMMAND AndAlso m.WParam.ToInt32 = SYSMENU_ABOUT_ID Then MessageBox.Show("Custom About Dialog") End If End Sub End Class
以上是关于自定义标题栏右键菜单的主要内容,如果未能解决你的问题,请参考以下文章