Освой компьютер
Двойное слово, расположенное с 20-го байта структуры IMS, содержит
информацию о событиях, вызвавших посылку сообщения. Биты этого слова имеют
тот же смысл, что и IDCMP-флаги, рассмотренные ранее. Так, для проверки
нажатия символа закрытия, добавьте в программу 7.1 (после метки loop)
следующий фрагмент: move.l D0,A0 ;указатель на IMS - в A0
move.l 20(A0),D6 ;информация о событии
tst.l D0 ;пришло сообщение?
bne.s end ;да, выход Вы можете использовать регистр D6 для получения информации о событии.
В нашем примере D6 будет содержать число $00000200, что сигнализирует
о нажатии символа закрытия. Так как при создании окна мы указали реакцию
только на это событие, D6 не может содержать других ненулевых значений.
Теперь рассмотрим другой случай. Измените значение IDCMP-слова с $200 на
$10200 и запустите программу. Удалите диск из дисковода - и программа
завершится. Это происходит потому, что помимо флага реакции на нажатие
символа закрытия ($200) мы указали флаг DISKREMOVED ($10000), который
соответствует событию удаления диска.
Если в D6 возвращается ненулевое значение, то возможны следующие варианты:
D6 содержит $200 - тогда произошло событие, соответствующее нажатию символа
закрытия. Если же D6 содержит $10000, то удален диск. Так как мы указали
только эти два флага в таблице параметров, функция GetMsg не может
возвращать других ненулевых значений. 7.5. Работа с меню. В этом пункте мы рассмотрим набор средств Intuition, позволяющих работать с
одним из важнейших элементов графического интерфейса - меню. Согласитесь,
что трудно представить системную программу на Amiga, не использующую меню. Существует множество способов создания и использования меню. Например,
можно создавать меню сложной структуры с наличием подменю; выбирать тип
пунктов меню (текст или графика), итд. Intuition имеет очень гибкие
средства для работы с меню, поэтому для многих функций требуются громоздкие
таблицы параметров.
AMIGA: ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ.
|