1,453
社区成员
发帖
与我相关
我的任务
分享
Const MF_CHECKED = &H8&
Const MF_APPEND = &H100&
Const TPM_LEFTALIGN = &H0&
Const MF_DISABLED = &H2&
Const MF_GRAYED = &H1&
Const MF_SEPARATOR = &H800&
Const MF_STRING = &H0&
Private Type POINTAPI
x As Long
y As Long
End Type
Dim hMenu As Long
Private Declare Function CreatePopupMenu Lib "user32" () As Long
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, ByVal lprc As Any) As Long
Private Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
Private Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
'下面iClick不管你点不点击New都是1,这样都执行了fg.AddItem "New", fg.MouseRow + 1,按理说只能点击New后才能执行AddItem,这是为什么?
Private Sub fg_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim Pt As POINTAPI
GetCursorPos Pt
If Button = vbRightButton Then
If fg.MouseCol = 0 Then
hMenu = CreatePopupMenu()
AppendMenu hMenu, MF_STRING, ByVal 0&, "New"
iClick = TrackPopupMenu(hMenu, TPM_LEFTALIGN, Pt.x, Pt.y, 0, Me.hwnd, ByVal 0&)
If iClick = 1 Then
fg.AddItem "New", fg.MouseRow + 1
End If
DestroyMenu hMenu
End If
End If
End Sub