Public Declare Function CreatePopupMenu Lib "user32" () As Long Public 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 Public 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 Public Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long Public Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long hMenu = CreatePopupMenu() AppendMenu hMenu, MF_STRING, ByVal 21, ChangePackageCaption iClick = TrackPopupMenu(hMenu, TPM_LEFTALIGN Or TPM_NONOTIFY Or TPM_RETURNCMD, pt.x, pt.y, 0, Me.hwnd, ByVal 0&) EnableMenuItem hMenu, ByVal 21, MF_BYCOMMAND Or MF_GRAYED DestroyMenu hMenu
Public 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
Public 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
Public Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long
Public Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long hMenu = CreatePopupMenu() AppendMenu hMenu, MF_STRING, ByVal 21, ChangePackageCaption iClick = TrackPopupMenu(hMenu, TPM_LEFTALIGN Or TPM_NONOTIFY Or TPM_RETURNCMD, pt.x, pt.y, 0, Me.hwnd, ByVal 0&) EnableMenuItem hMenu, ByVal 21, MF_BYCOMMAND Or MF_GRAYED DestroyMenu hMenu
然后在SetWindowLong指定的回调函数中处理WM_COMMAND消息。(判断wParam的值来确定是不是某菜单)