MenusObviously, you're going to need a
menu in your application so here is a short program that
displays a simple menu and allows you to select any item.
It tells you which item has been selected and it also
allows you to use shortcuts, such as Ctrl+a instead of
pressing the Menu key and navigating your way through all
the items.
Look at the Do...Until loop in the program below. First
we use Get to see what key is being pressed
and the key code is returned in k%. First we check to see
if this is 290 - the menu key. If it is then we call the showmenu: procedure.
This procedure uses mInit to tell the system that we're going to
define a new menu. mCard is then used to define each menu. The first
string in quotes, "File" in the first mCard line below, defines the title of the menu,
and the following strings define the menu items that
appear. Following each menu item is the shortcut key.
So, mCard
"Help","About",%a in the program below defines a
menu with the title Help and About as a menu item on it.
The shortcut for About is %a which meansCtrl+a.
Well, actually, this isn't
quite the full story. the %a tells the menu item to
return the Ascii code of 'a', which is 97. However, if
you press Ctrl+a you get the code 1 (and Ctrl+b is 2,
Ctrl+c is 3 and so on). This is why the showmenu: procedure returns the menu code
minus 96. Think about it!
On final point - why use
-%s below? Well, it still means that the Ascii code of
's' is returned (we subtract 96 and get 19, the same as
Ctrl+s), but the minus sign mens underline the menu item.
It acts as a separator between two groups of menu items.
PROC menu:
Local k%
Print "Press the Menu key and make a selection"
Print "Or Press Ctrl + a letter key"
Print
Do
k%=Get
If k%=290 : k%=showmenu: : Endif
If k%=15 : Print "Open"
Elseif k%=19 : Print "Save"
Elseif k%=1 : Print "About"
Else
Print "key = ";k%
Endif
Until k%=5
ENDP
PROC showmenu:
mInit
mCard "File","Open",%o,"Save",-%s,"Close",%e
mCard "Help","About",%a
Return Menu-96
ENDP
|