Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен / Answers (1-20).docx
Скачиваний:
242
Добавлен:
15.06.2014
Размер:
54.64 Кб
Скачать

10. Функции управления курсором.

Классические языки высокого уровня не содержат средств управления позицией вывода на экране и цветом символов текста. Такая ситуация в значительной степени предопределена тем, что когда создавались эти языки, подобные средства были недоступны по аппаратным причинам.

Windows

BOOL SetConsoleCursorPosition(HANDLE hConsOut, COORD pos)

В pos записывается структура COORD с амперсандом.

В операционной системе Unix для управления курсором и некоторых других действий с экраном предназначены управляющие последовательности.

"\033[строка;столбецH"

11. Многократный вывод символов и атрибутов.

Для многократного вывода одного символа в Windows предназначена функция FillConsoleOutputCharacter, а для многократного вывода одного и того же атрибута – функция FillConsoleOutputAttribute. Эти функции имеют прототипы

BOOL FillConsoleOutputCharacter(HANDLE hConsOut, CHAR character, WORD len, COORD pos, DWORD* actlen)

BOOL FillConsoleOutputAttribute(HANDLE hConsOut, WORD attr, DWORD len, COORD pos, DWORD* actlen)

BOOL SetConsoleTextAttribute(HANDLE houtput, WORD attrib)

Последняя функция устанавливает цвет, автоматически используемый далее при выводе на экран функцией WriteFile, а также используемый при отображении символов в процессе ввода функцией ReadFile.

В операционной системе Unix отсутствуют системные функции многократного вывода символов и атрибутов. Проблема использования цвета в Unix была решена с помощью управляющих последовательностей.

"\033[цветm"

12. Вывод в произвольную позицию экрана

В Windows для вывода строки текста в произвольную позицию экрана служит функция

BOOL WriteConsoleOutputCharacter(HANDLE hConsOut, CSTR* text, DWORD len, COORD pos, DWORD* actlen)

Парное сочетание функций FillConsoleOutputAttribute и WriteConsole­Output­Character характерно для консольных приложений Windows, в которых требуется выполнять вывод с новым цветом в непоследовательных позициях экрана.

Рассмотренной функции вывода символов вместе с их атрибутами соответствует функция:

BOOL WriteConsoleOutput(HANDLE hConsOut, CHAR_INFO* cells, COORD dwBufferSize, COORD dwBufferCoord, SMALL_RECT* rect)

В Unix для вывода строки текста с различными атрибутами следует использовать управляющие последовательности между отдельными выводимыми символами:

"\033[1;31;44mП\033[0;32;40mр\033[1;36;40mи\033[33;44mв\033[31;42mе\033[34;43mт\n"

13. Событийное программирование и его использование в функциях ввода.

В настоящее время поведение программных систем зависит не столько от действия последовательности действий алгоритма а от воздействий на системы. Такими воздействиями являются нажатия клавиш клавиатуры, перемещение мыши и нажатие ее кнопок, а также более сложные действия, реализуемые обычно также с помощью мыши. Момент когда алгоритм прерывается и выполняется какая-то часть программы назвается механизмом прерываний. Разработка программ обработчиков прерываний очень не простая задача и поэтому ее выполняют разработчики операционных систем. Остальным предоставляется неявно пользоваться этим механизмом.

Для текстовой консоли Windows, по замыслу разработчиков, теоретически возможны сообщения от нажатия клавиши клавиатуры, от мыши, сообщения об изменении размера окна, о переходе активности к текущему окну или о потере такой активности.

В Windows программа для текстового окна может запросить сообщение путем вызова системной функции ReadConsoleInput.

BOOL ReadConsoleInput(HANDLE hConsInput, INPUT_RECORD* buffer, DWORD len, DWORD* actlen)

Для использования какого либо события необходимо пользоваться следующими константами:

KEY_EVENT, MOUSE_EVENT, WINDOW_BUFFER_SIZE_EVENT, MENU_EVENT, FOCUS_EVENT.

Соседние файлы в папке Экзамен