Освой компьютер
п. 7.2)
в D1 - то же, только для правой кнопки
в D2 - ширина реквестера
в D3 - высота реквестера Эту функцию можно использовать, например, так: AutoRequest = -348
...
request:
move.l windowhd(PC),A0 ;идентификатор окна
lea btext(PC),A1 ;текст реквестера
lea ltext(PC),A2 ;текст для левой кнопки
lea rtext(PC),A3 ;текст для правой кнопки
moveq.l #0,D0 ;события для левой кнопки
;реквестера: реакция - только
;на нажатие левой кнопки мыши
moveq.l #0,D1 ;события для правой кнопки
;реквестера
move.l #180,D2 ;ширина и
moveq.l #80,D3 ;высота реквестера
move.l intbase(PC),A6 ;база intuition.library
jsr AutoRequest(A6) ;создать реквестер
rts ;возврат
Использование флагов в регистрах D0 и D1 дает некоторые интересные
возможности. Например, если при появлении системного реквестера вставить
диск в дисковод, реквестер исчезнет и система выполнит действия,
эквивалентные выбору кнопки Retry. Это достигается путем задания флага
DISKINSERTED в регистре D0.
Теперь рассмотрим формат текстовых сообщений, адреса которых указываются
в регистрах A1, A2 и A3. Первые два байта каждого из этих сообщений
определяют цвета текста и фона: text:
dc.b 2 ;цвет текста
dc.b 0 ;текст фона Далее указывается режим вывода текста (например, режим 4 определяет
инверсный вывод). Будем использовать обычный режим: dc.b 0 ;обычный вывод текста Следующие две записи определяют координаты текста в окне. Эти записи имеют
формат Word (слово), а так как им предшествуют три байта, необходимо
использовать директиву Align (для выравнивания по четности): align
dc.w 10 ;X - координата текста
dc.w 5 ;Y - координата текста Далее следует указатель на таблицу символов (шрифт).
AMIGA: ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ.
|