Освой компьютер
Для начала рассмотрим простейший способ создания меню. В состав
intuition.library входит функция SetMenuStrip (смещение -264), которая
вызывается с двумя параметрами: в A0 - указатель на структуру окна (идентификатор окна), для которого нужно
создать меню
в A1 - указатель на блок данных, определяющий струкруру меню Каждое окно может иметь собственное меню верхнего уровня (горизонтальное),
которое становится доступным одновременно с активизацией окна.
Функцию SetMenuStrip можно использовать, например, так: SetMenuStrip = -264
...
setmenu: ;* инициализация меню
move.l intbase(PC),A6 ;база intuition.library
move.l windowhd(PC),A0 ;идентификатор окна
lea menu(PC),A1 ;указатель на блок данных меню
jsr SetMenuStrip(A6) ;вызываем SetMenuStrip
rts ;все Для уничтожения меню используется функция ClearMenuStrip: ClearMenuStrip = -54
...
clearmenu: ;* уничтожение меню
move.l intbase(PC),A6 ;база intuition.library
move.l windowhd(PC),A0 ;идентификатор окна
jsr ClearMenuStrip(A6) ;уничтожаем меню
rts Для каждого пункта меню верхнего уровня должна быть определена специальная
структура - блок данных меню. Рассмотрим формат этого блока: Первое слово (формат Long) содержит указатель на блок данных следующего
пункта меню, либо ноль, если текующий пункт является последним. menu:
dc.l menu1 ;указатель на следующее меню
Далее следуют два слова, определяющие координаты заголовка меню: dc.w 20 ;X - координата
dc.w 0 ;Y - координата
Следующие два слова содержат ширину и высоту заголовка меню (в пикселах): dc.w 50 ;ширина заголовка
dc.w 10 ;высота заголовка
Следующее слово содержит специальный флаг, определяющий, доступно данное
меню или нет (заголовки недоступных меню обычно отображаются \"прерывистым\"
шрифтом).
AMIGA: ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ.
|