A class for API Created Dynamic Menus
For some controls In my current project, I wanted To be able To display a simple context menu using the Right mouse button.
The solution In plain VB uses an existing menu, which must be extended (at runtime Or at design Time). I found this unacceptable.
Searching the web offered the solution of using the API functions CreatePopupMenu(), TrackPopupMenu() And AppendMenu().
I extended the sample To work With a undetermined number of arguments, thus giving Me the flexibility I needed.
The presented Function Popup() assumes the user wants a context menu at the current mouse pointer location. The argument Array consists of menu items Or separators (presented by a Single dash). The user can Select a menu Item by using either the Left Or Right mouse button. The index of the chosen menu Item Is returned, Or zero If cancelled.
A simple usage of the class module could be : (on a list box)
private Sub List1_MouseUp(Button as Integer, Shift as Integer, _
x as Single, y as Single)
Dim oMenu as cPopupMenu
Dim lMenuChosen as Long
'
If Button = vbRightButton then
set oMenu = new cPopupMenu
'
' Pass in the desired menu, use '-' for a separator
'
lMenuChosen = oMenu.Popup("Menu 1", "Menu 2", "Menu 3", _
"-", "Menu 4")
'
Debug.print lMenuChosen
End If
'
End Sub
'
'

Comments