КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Управление программой с помощью клавиатуры
Вопросы для самопроверки Вопросы для самопроверки и контроля Дополнительные функции Пиксели unsigned getpixel ( int x, int y); Возвращает цвет пикселя с заданными координатами. void putpixel ( int x, int y, int color); Рисует пиксель цветом color в точке (x, y). void sound ( unsigned frequency); Включить звук(частота в гц). void nosound ( void ); Выключить звук. void delay (unsigned time); Задержка выполнения в миллисек. void sleep ( unsigned lag); Задержка выполнения в сек. Прототипы в файле dos.h Данные функции не относятся к библиотеке graphics. Они приводятся в этом разделе, чтобы программист имел возможность включить звук в проектирование интерфейса. 1. Как перейти в графический режим? 2. Укажите размер экрана и начальные координаты курсора в текстовом и графическом режимах соответственно. Контрольные вопросы 1. Что представляют собой файлы с расширением bgi? 2. Почему в графическом режиме используются битовые образы размером 8*8 пикселей? Часто требуется после выполнения фрагмента программы дать возможность пользователю выбрать один из нескольких вариантов продолжения. Обычно это реализуется с помощью ввода с клавиатуры без отображения на экране каких-либо символов. Более того, чаще всего используют клавиши, не имеющие графического изображения соответствующего символа. Такие символы часто называют управляющими. Клавиши, не имеющие графического изображения: ß à PgUp PgDn Del End Home и т.п. Каждая клавиша имеет расширенный код символа, занимающий 2 байта. Если в нем младший байт не равен 0, то в нем хранится ASCII -код символа, если он равен 0, то в старшем байте находится сканкод клавиши, характерный только для IBM PC. Все управляющие клавиши, кроме клавиш Esc, Tab, Enter имеют нулевой младший байт, поэтому приходится по-разному обрабатывать управляющие и обычные символы. Более того, для управления программой можно использовать сочетания клавиш типа: Shift + Tab, Alt + F1, Ctrl + F10 и т.п., которые имеют свои расширенные коды. Байт 2 Байт 1 Расширенный код клавиатуры: Сканкод ASCII -код Для чтения символов с клавиатуры без отображения на экран используются функции: - getch (), - int bioskey (in t cmd); à Прототип в файле bios.h. Возможные значения параметра cmd ={0|1|2}. Если значение cmd равно 0, то функция возвращает расширенный код клавиатуры и удаляет его из буфера клавиатуры, если буфер пуст, то ожидает нажатие клавиши. Как работает функция bioskey с параметрами {1|2}, можно посмотрить в подсказке(help) среды Borland C++ 3.1. Пример. Фрагмент реализации простейшего текстового редактора. #include < bios.h > #define LEFT 19200 #define RIGHT 19712 #define HOME 18176 #define END 20224 #define DEL 21248 #define ENTER 7181 ................... flin=1; while (flin){ cod = bioskey (0); switch (cod){ case ENTER: /* Конец ввода */ flin = 0; break; case LEFT: /* Влево на 1 символ */ ....... break; case RIGHT: /* Вправо на 1 символ */ ....... break; case HOME: /* В начало строки */ ....... break; case END: /* В конец строки */ ....... break; case DEL: /* Удалить символ над курсором */ ....... break; default: /* Ввод символа */ cod &= 0x00ff; if (cod >= 040){ /* Нормальный символ */ ......... } } /* End switch */ .......... } /* End while */ Расширенные коды клавиш можно взять из системы help, либо написать программу с использованием функции bioskey (0), печатающую их в нужной системе счисления при нажатии соответствующей клавиши. Те же манипуляции можно выполнить и с функцией getch (), только нужно дважды читать один и тот же расширенный код. Первое обращение к функции getch () читает младший байт буфера клавиатуры. Если он не равен 0, то следующее обращение к getch () будет вновь читать младший байт следующего символа, если же он равен 0, то следующее обращение прочтет старший байт буфера клавиатуры. Пример. cod1 = getch (); // Читаем младший байт if (cod1 == 0){ // Читаем старший байт cod2 = getch (); }
Дата добавления: 2014-12-27; Просмотров: 477; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |