The combination of menu items, menu components and menus can create a hierarchical structure as shown schematically in A schematic example of a menu hierarchy and graphically in An example of a menu hierarchy. This menu has five elements, one of which is itself a menu (with three menu items) and the remainder are menu components and menu items. Items in a menu inherit values from their parent, allowing similar elements to share relevant properties whenever possible.
(defun menu-item-name (data)
(format nil "Menu Item ~D" data))
(defun submenu-item-name (data)
(format nil "Submenu Item ~D" data))
(contain
(make-instance
'menu
:items
(list
(make-instance 'menu-component
:items '(1 2)
:print-function 'menu-item-name
)
(make-instance 'menu-component
:items
(list 3
(make-instance
'menu
:title "Submenu"
:items '(1 2 3)
:print-function
'submenu-item-name))
:print-function 'menu-item-name)
(make-instance 'menu-item
:data 42))
:print-function 'menu-item-name))
Figure 9.5 A schematic example of a menu hierarchy
Figure 9.6 An example of a menu hierarchy
CAPI User Guide (Windows version) - 30 Aug 2011