如果你不想只能在标题栏上单击鼠标右键才能弹出系统菜单。
你可以使用一下方法。这个方法在自绘标题栏方面很实用。
新建模块,代码如下:
Option Explicit
Private Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal X As Long, ByVal Y As Long, ByVal nReserved As Long, ByVal Hwnd As Long, lprc As RECT) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal Hwnd As Long, ByVal bRevert As Long) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type POINTAPI
X As Long
Y As Long
End Type
Public Sub ShowSystemMenu(Hwnd As Long)
On Error Resume Next
Dim r As RECT
Dim p As POINTAPI
GetCursorPos p
TrackPopupMenu GetSystemMenu(Hwnd, 0&), 0, p.X, p.Y, 0, Hwnd, r
End Sub
窗口代码如下:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then Call ShowSystemMenu(Me.Hwnd)
End Sub
你可以使用一下方法。这个方法在自绘标题栏方面很实用。
新建模块,代码如下:
Option Explicit
Private Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal X As Long, ByVal Y As Long, ByVal nReserved As Long, ByVal Hwnd As Long, lprc As RECT) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal Hwnd As Long, ByVal bRevert As Long) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type POINTAPI
X As Long
Y As Long
End Type
Public Sub ShowSystemMenu(Hwnd As Long)
On Error Resume Next
Dim r As RECT
Dim p As POINTAPI
GetCursorPos p
TrackPopupMenu GetSystemMenu(Hwnd, 0&), 0, p.X, p.Y, 0, Hwnd, r
End Sub
窗口代码如下:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then Call ShowSystemMenu(Me.Hwnd)
End Sub



