Консультация № 146327
07.10.2008, 14:12
0.00 руб.
0 8 0
Здравствуйте!
Позвольте задать пару вопросов.

1) Функция 0СH прерывания 33h, которая задает обработчик для событий мыши. Работает ли она по принципу прерывания 08h. Т.е. могу ли я в головной программе выполнять какой либо цикл – а между любыми строками, при активации мыши, происходит вызов ее подпрограммы. Правильно ли я это понимаю?
2) И если это так, т.е. головная программа прерывается, то кто сохраняет все регистры: ведь в подпрограмму мыши в регистрах передаются координаты и т.д. Когда я пользовался 08h прерыванием, я внутри его обработчика беспокоился о сохранении регистров, которые у него внутри использую. А здесь регистры уже заполнены драйвером мыши. Получается драйвер все сохраняет?

Обсуждение

Неизвестный
08.10.2008, 10:22
общий
Функции прерывания Вы можете вызывать сами по мере необходимости - тогда "между любыми строками"
Но удобнее определить функцию - обработчик прерывания. Она будет вызываться, когда произойдет выбранные событие мыши (при определении такой функции - обработчика нужно указать, на что она должна реагировать).
Лучше всего, если эту функция установит флаг программы (байт, например), и скопирует в переменные программы координаты и прочие параметры. И ВСЕ! Эта функция ничего больше делать не должна (вызов может быть очень частым).
--
О заполнении всего: обратите внимание, что при вызове такой функции регистр DS будет "мышиный" - не Ваш. А все остальные регистры сохраняются
Неизвестный
09.10.2008, 11:20
общий
Boriss. Я вот не понял фразу: А все остальные регистры сохраняются.
Т.е. это "мышиный " драйвер сохраняет нужные регистры? Потом их заполняет своими данными, которые попадают в обработчик (т.е. какую кнопку нажали, координаты и т.д.), и после выхода из обработчика - драйвер восстанавливает регистры. Так ли это? И какие он регистры сохраняет - все, или которые только заполняет?
Неизвестный
09.10.2008, 15:26
общий
Я имел в виде, конечно, те регистры, которые не упомянуты в описании функции
Неизвестный
09.10.2008, 15:33
общий
В свое время я разбирался, как работает Turbo Vision в Turbo Pascal - пожалуй, для DOS там оптимальная схема обработки сообщений от мыши использована. Если хотите, модуль пришлю - обработчик на ассемблере
Неизвестный
09.10.2008, 15:34
общий
В свое время я разбирался, как работает Turbo Vision в Turbo Pascal - пожалуй, для DOS там оптимальная схема обработки сообщений от мыши использована. Если хотите, модуль пришлю - обработчик на ассемблере
Неизвестный
10.10.2008, 10:57
общий
Здравствуйте Boriss!
Если сможете то пришлите на мой ящик (bartoflex@yandex.ru) .
По возможности постараюсь разобраться (опыта еще мало).
Неизвестный
10.10.2008, 12:03
общий
Высылаю: спрашиваемое находится в файле G_DRV_11.PAS
Все остальное - пример использования и дополнительные модуля для Borland (Turbo) Pascal
Есть краткое описание в файлах OBJ_SHOW_ANSI.TXT или OBJ_SHOW_DOS.TXT
Неизвестный
10.10.2008, 13:32
общий
Boriss! Спасибо за файлы. Когда вопросы будут спрошу.
Форма ответа