Консультация № 73584
01.02.2007, 05:42
0.00 руб.
0 2 2
Пишу простейший вьюер тесктовых файлов.Как реализовать ПОСТРОЧНУЮ прокрутку текста по нажатию стрелок?

Обсуждение

Неизвестный
01.02.2007, 11:18
общий
это ответ
Здравствуйте, Kashey!

Если простейший, то под DOS, так? :)
При распознавании нажатия стрелок (расширенные коды которых 72 для "вверх" и 80 для "вниз", числа десятичные) можно пользоваться прерыванием INT 10h.
Его функция 06h прокручивает изображение в прямоугольной области экрана. AL задаёт число перемещаемых строк (0 очищает экран), BH - цвет новых строк, CH - номер верхней строки области, CL - номер левой колонки, DH - нижней строки, DL - правой колонки. Например, код
MOV AX,0601h
MOV BH,07h
MOV CX,0000h
MOV DX,184Fh
INT 10h
перемещает всё, что содержится в окне, на 1 строку вверх.
Функция 07h с полностью аналогичными параметрами прокручивает изображение вниз. Обе они не трогают курсор.
Так что остаётся только заполнить верхнюю/нижнюю строки соответствующим текстом. Удачи!
давно
Старший Модератор
31795
6196
01.02.2007, 11:36
общий
это ответ
Здравствуйте, Kashey!

В текстовых файлах каждая строка заканчивается кодами 0Dh и 0Ah,
поиск их текстовом буффере можно сделать используя строковые команды вместе с префиксами меняя только направление сканирования. После сканирования у Вас в ES:DI будет находится адрес текста после вывода на экране будет в левом верхнем углу(при сканировании назад нужно будет корректировать DI, потому,что он не будет указывать на начало строки). На экран выводиш начиная с этого адреса плюс количество строк.

если курсор вверху и нажата стрелка вверх ищеш начало предыдушей строки,
если курсор внизу и нажата стрелка вниз ищеш начало следующей строки,
иначе двигаеш курсор по экрану.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа