Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

Обработка событий клавиатуры в DOS

#c #клавиатура #dos


Мне нужно создать окно, размеры которого можно менять нажатием клавиши.

К примеру Right Shift в программе Borland C++ 3.1 на языке программирования Си. Само
окно я создал, но не понимаю, как написать функцию, которая бы понимала, что нажата
нужная клавиша и меняла бы размер окна. Прошу вас о помощи.
    


Ответы

Ответ 1



Неправильный путь - опрашивать устройства ввода внутри элемента, который получил фокус. Его даже рассматривать не будем, сразу перейдём к правильному. Правильный - внешний обработчик, который ставит полученные события в очередь. И эта очередь доступна окнам, кнопкам и прочим объектам. В Windows тут специально ничего делать не надо, эта схема обработки событий и так присутствует изначально. Для DOS идеальным решением будет работа с прерываниями (свой обработчик int 9h для клавиатуры, int 33h для мыши и т.д.). Именно так устроена обработка событий в Turbo Vision, поэтому имеет смысл не изобретать велосипед, а взять всё оттуда. Тем более что исходники есть. Для Linux всё немного сложней (см. пример, и это не единственный вариант), но общий смысл остаётся тот же. И главное, что нужно понять. Несмотря на то, что общий принцип один и тот же, реализация его очень сильно завязана на ОС и платформу, и именно она составляет львиную долю работы (ни язык C, ни язык C++ не имеют средств для полноценной работы с устройствами ввода, поэтому всё нужно делать самостоятельно). И тратя время на DOS нужно хорошо понмать зачем это делается, так как в подавляющем большинстве случаев время это будет потрачено впустую.

Комментариев нет:

Отправить комментарий