- •Работа с консолью в среде Windows
- •Организация высокоуровневого консольного ввода-вывода
- •Обработка событий в консольном приложении.
- •Организация низкоуровневого консольного ввода-вывода
- •Поддержка работы с мышью в консольном приложении.
- •Поддержка работы с клавиатурой в консольном приложении
- •Задание для самостоятельной работы
- •Задание для самостоятельной работы
Задание для самостоятельной работы
С использованием функции ReadConsoleInput разработать программу, реализующую ввод символов с клавиатуры с последующим их отображением на экране. В случае нажати на клавиатуре клавиши “Правый ALT” вывести сообщение вида “< Right Alt pressed >”. Нажатия остальных служебных клавиш не должны приводить к выводу какой-либо информации на экран. Ввод данных с клавиатуры и их вывод на экран осуществлять до тех пор, пока не будет выполнен двойной щелчок любой клавиши мыши.
При выполнении задания необходимо учесть следующие моменты:
1) В ходе выполнения функция ReadConsoleInput проверяет входной буфер консоли. Если в нем есть записи, то она их обрабатывает; если записей нет, то ждет их появления (то есть ждет любых событий - это может быть даже движение мыши влево, вправо и т.д.- на любое событие операционная система производит заполнение входного буфера консоли, то есть создает запись). В результате выполнения функции ReadConsoleInput заполняется переменная INPUT_RECORD_buf и регистр еах.
2) В результате нажатия клавиши во входном буфере появятся две записи: одна соответствует опусканию клавиши, а вторая - подъему клавиши. Функция ReadConsoleInput проверяет входной буфер консоли и заполнит переменную INPUT_RECORD_buf этими записями. То есть в переменной последовательно появятся две записи, отличающиеся только одним полем - признаком того опустили клавишу или подняли клавишу. При отображении на экране с использованием вызова функции WriteConsole будет выведено два одинаковых символа. Для исключения этой ситуации нужно обработать только опускание клавиши, а подъем - проигнорировать.
3) При нажатии функциональных клавиш, а также клавиш ALT, SHIFT, CTRL и пр. в поле AsciiChar записывается нулевое значение. При выводе на экран символа с кодом ноль отображается пробел. Чтобы не выводить символы с кодом ноль, предварительно необходимо проверить значение поля AsciiChar на ноль, и в случае равенства нулю не производить вывод на экран.
Задание для самостоятельной работы
Написать программу для ввода с клавиатуры массива из 5 целых положительных чисел. Числа должны быть четырехзначными. Отсортировать полученный массив по возрастанию и вывести на экран. Найти сумму максимального и минимального элементов массива и вывести на экран.
"0" = 30h
"1" = 31h
"2" = 32h
"3" = 33h
"4" = 34h
"5" = 35h
"6" = 36h
"7" = 37h
"8" = 38h
"9" = 39h
"Enter" = 0Dh = 13
"Backspace" = 08h = 8
