Вопрос № 73584: Пишу простейший вьюер тесктовых файлов.Как реализовать ПОСТРОЧНУЮ прокрутку текста по нажатию стрелок?...
Вопрос № 73.584
Пишу простейший вьюер тесктовых файлов.Как реализовать ПОСТРОЧНУЮ прокрутку текста по нажатию стрелок?
Отправлен: 01.02.2007, 05:42
Вопрос задал: Kashey (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Олег Владимирович
Здравствуйте, 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 с полностью аналогичными параметрами прокручивает изображение вниз. Обе они не трогают курсор.
Так что остаётся только заполнить верхнюю/нижнюю строки соответствующим текстом. Удачи!
--------- Факультет ПМ-ПУ - лучший в СПбГУ!
Ответ отправил: Олег Владимирович (статус: Студент)
Ответ отправлен: 01.02.2007, 11:18
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Kashey!
В текстовых файлах каждая строка заканчивается кодами 0Dh и 0Ah,
поиск их текстовом буффере можно сделать используя строковые команды вместе с префиксами меняя только направление сканирования. После сканирования у Вас в ES:DI будет находится адрес текста после вывода на экране будет в левом верхнем углу(при сканировании назад нужно будет корректировать DI, потому,что он не будет указывать на начало строки). На экран выводиш начиная с этого адреса плюс количество строк.
если курсор вверху и нажата стрелка вверх ищеш начало предыдушей строки,
если курсор внизу и нажата стрелка вниз ищеш начало следующей строки,
иначе двигаеш курсор по экрану.
Удачи!