Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Функции BIOS, DOS, Win32 API для работы с клавиатурой.



•Функции DOS.

1)ocH. Очищает буфер опережающего ввода стандартного ввода, а затем вызывает функцию ввода, указанную в AL. Это заставляет систему ожидать ввод очередного символа. следующие значения допустимы в AL: 01H ввод с клавиатуры.

Вход

AH = 0cH

AL = номер функции ввода DOS (01H, 06H, 07H, 08H или 0aH)

Выход

нет

2)oaH – ввод строки в буфер.

Вход

AH = 0aH

DS:DX = адрес входного буфера (смотри ниже)

Первый байт – размер буфера

Второй байт – число фактич. Прочитанных символов

Выход

Второй байт – число фактич. Прочитанных символов
функции BIOS (см. выше – прерывание 16h)

•фукнции WIN32 API
Функция ReadConsole читает символьный ввод данных из консольного буфера ввода и удаляет их из буфера.
BOOL ReadConsole(

 

HANDLE hConsoleInput , // дескриптор буфера ввода консоли

LPVOID lpBuffer,         // буфер данных

DWORD nNumberOfCharsToRead, // число символов для чтения

LPDWORD lpNumberOfCharsRead , // число прочитанных символов

LPVOID lpReserved        // зарезервировано

 

);

 

Параметры

  • hConsoleInput - [in] Дескриптор консольного буфера ввода. Дескриптор должен иметь право доступа GENERIC_READ. Для получения дополнительной информации, см. статью Защита буфера и права доступа в консоли.
  • lpBuffer -[out] Указатель на буфер, который принимает прочитанные данные из консольного буфера ввода. Общий размер требуемого буфера, должен быть меньше чем 64КБ
  • nNumberOfCharsToRead- [in] Число TCHARs для чтения. Размер буфера, указанного параметром lpBuffer, должен быть, по крайней мере, nNumberOfCharsToRead * sizeof (TCHAR) байт.
  • lpNumberOfCharsRead - [out] Указатель на переменную, которая принимает число фактически прочитанных TCHARs.
  • lpReserved - [in] Зарезервировано, должно быть ПУСТО (NULL).

 

Функция ReadConsoleOutput читает символьные данные и данные об атрибутах цвета из прямоугольного блока символьных знакомест в экранном буфере консоли, и записывает данные прямоугольного блока в заданном местоположении в буфере назначения.

BOOL ReadConsoleOutput(

HANDLE hConsoleOutput, // дескриптор экранного буфера

PCHAR_INFO lpBuffer, // буфер данных

COORD dwBufferSize, // размер буфера в сроках колонок

COORD dwBufferCoord, // левая верхняя ячейка для записи

PSMALL_RECT lpReadRegion // прямоугольник чтения

);

 

Параметры

  • hConsoleOutput -[in] Дескриптор экранного буфера консоли. Дескриптор должен иметь право доступа GENERIC_READ. Для получения дополнительной информации, см. статью Защита буфера и права доступа в консоли.
  • lpBuffer -[out] Указатель на буфер назначения, который принимает чтение данных из экранного буфера консоли.
  • dwBufferSize - [in] Размер параметра lpBuffer, в символьных знакоместах.
  • dwBufferCoord - [in] Координаты левой верхней ячейки в параметре lpBuffer, который принимает чтение данных из экранного буфера консоли.
  • lpReadRegion - [in/out] Указатель на структуру SMALL_RECT. При вводе данных, члены структуры устанавливают левые верхние и нижние правые координаты прямоугольника экранного буфера консоли, из которого функция должна читать. При выводе данных, члены структуры устанавливают фактический прямоугольник, который был использован.

 




Структура видеосистемы ЭВМ. Видеоадаптер. Видеобуфер. Представление текстовых данных в видеобуфере. Байт атрибута. Дисплейные страницы. Загрузка шрифтов. Основные функции DOS, BIOS, Win32 API для вывода на экран в текстовом режиме. Прямая работа с видеопамятью.

Загрузка шрифтов

В MS-DOS средствами BIOS поддерживается работа с растровыми шрифтами. Функции BIOS позволяют получать и устанавливать пользовательские шрифты, а также получать шрифты из знакогенератора видеоадаптера. Все устанавливаемые шрифты имеют одинаковую ширину 8 точек, а высота может иметь три фиксированных значения - 8, 14 или 16 точек. Конкретное значение высоты шрифта определяется видеорежимом, для которого загружается шрифт. Высота шрифта 8 точек соответствует видеорежиму с 50/43 строками, высота 14 точек - видеорежиму с 25 строками для EGA, а высота 16 точек - видеорежиму VGA с 25 строками

 

Таблица шрифта представляет собой массив, каждый элемент которого описывает один символ. Максимальное количество элементов в таблице - 256 (так как на экране возможно отображение не более 256 различных символов одновременно). Если требуется загрузить только некоторые символы (подфункция 00h), то элементов может быть меньше. Символ в каждом элементе таблицы описывается построчно. Так как ширина символа постоянна и равна 8 точкам, то каждая строка символа кодируется 8 битами, т.е. одним байтом. Установленный бит (1) означает, что соответствующая точка символа отображается на экране цветом текста, а сброшенный бит (0) означает, что точка отображается цветом фона (цвет текста и фона задаётся в видеопамяти байтами атрибутов символа - 4 бита на цвет текста и 4 бита на цвет фона). Количество байт в элементе таблицы шрифта равно количеству строк в символе. Так, например, для шрифта высотой 16 точек каждый элемент таблицы занимает 16 байт

 


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 294; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.012 с.)
Главная | Случайная страница | Обратная связь