AnnMenu example for Visual Basic

'Please note the following:
'LEADRasterView1 refers to a LEADRasterView control
'Global declarations
Private WithEvents RasterAnn As LEADRasterAnnotation
Private RasterAnnToolbar As LEADRasterAnnToolBar

'In the Form_Load method:
Set RasterAnn = New LEADRasterAnnotation
Set RasterAnnToolbar = New LEADRasterAnnToolBar
RasterAnn.AnnParentRasterView = LEADRasterView1

Private Sub RasterAnn_OnAnnMenu(ByVal hMenu As Long)
Dim szout As String
Dim nID As Integer
Dim RasAnnMenu As LEADRasterAnnMenu
Dim AnnPopupMenu As LEADRasterAnnMenu
Dim x As Integer

Set RasAnnMenu = CreateObject("LEADRasterAnnMenu.LEADRasterAnnMenu. ")

RasAnnMenu.SetAnnMenu hMenu
RasAnnMenu.EnableMethodErrors = False
szout = "There are " + CStr(RasAnnMenu.Count) + " Items"
MsgBox szout
szout = "Original Text for item#2: "
szout = szout + RasAnnMenu.ItemString(1)
MsgBox szout
'set new string
RasAnnMenu.ItemString(1) = "TestText"
szout = "Custom Text for item#2: "
szout = szout + RasAnnMenu.ItemString(1)
MsgBox szout

'make 3rd and 4th menu items have the same command id
nID = RasAnnMenu.ItemID(3)
RasAnnMenu.ItemID(2) = nID

'check all unchecked menu items that are not popup submenus
'disable all enabled menu items that are not popup submenus
For x = 0 To RasAnnMenu.Count
If RasAnnMenu.ItemType(x) = ANN_MENUITEMTYPE_NORMAL Then
   If RasAnnMenu.ItemChecked(x) Then
      RasAnnMenu.ItemChecked(x) = True
   End If
   If RasAnnMenu.ItemEnabled(x) Then
      RasAnnMenu.ItemEnabled(x) = False
   End If
End If
Next x

'insert 2 user-defined menu items
RasAnnMenu.AddItem "Test&1", ANN_MENUITEMTYPE_NORMAL, ANN_EVENT_MENUFIRST + 0, RasAnnMenu.Count - 1
RasAnnMenu.AddItem "Test&2", ANN_MENUITEMTYPE_NORMAL, ANN_EVENT_MENUFIRST + 1, RasAnnMenu.Count - 1

'delete the last menu item
RasAnnMenu.DeleteItem (RasAnnMenu.Count - 1)

'delete the first menu item
RasAnnMenu.DeleteItem (0)

'insert a popup menu
RasAnnMenu.AddItem "Popup", ANN_MENUITEMTYPE_SUBMENU, 0, RasAnnMenu.Count

'get the new item, and add some items to it
RasAnnMenu.GetSubMenu RasAnnMenu.Count - 1, AnnPopupMenu

AnnPopupMenu.AddItem "Popup&1", ANN_MENUITEMTYPE_NORMAL, ANN_EVENT_MENUFIRST + 2, AnnPopupMenu.Count
AnnPopupMenu.AddItem "Popup&2", ANN_MENUITEMTYPE_NORMAL, ANN_EVENT_MENUFIRST + 3, AnnPopupMenu.Count

End Sub

Private Sub RasterAnn_OnAnnUserMenu(ByVal nID As Long)
   If nID = ANN_EVENT_MENUFIRST Then
       RasterAnn.AnnFlip False, 0, True
   Else
       MsgBox "nID = ANN_EVENT_MENUFIRST + " + CStr(nID - ANN_EVENT_MENUFIRST)
   End If
End Sub