![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Обработка ошибок системы графики Turbo С
Защищенное от ошибок построение программы требует использования функции graphresult() после любого обращения к функциям detectgraph() и initgraph(). Далее следует описание функций обработки ошибок, сообщающих внутренние коды ошибок графической библиотеки (graphresult()) или формирующей строку диагностического сообщения (grapherrormsg()).
#include <graphics.h> Int graphresult(void) Возвращает значение внутреннего кода ошибки, установленного последним обращением к функциям графической библиотеки. Перед завершением сбрасывает код ошибки в 0. Прикладная программа может интерпретировать возвращаемое значение, сопоставляя его с целым числом либо с символической константой из перечислимого типа graphics_errors, определенного в <graphics.h> (табл. 2.3). #include <graphics.h> char * grapherrormsg( int errorcode) Возвращает указатель на ASCIlZ-строку символов, содержащую сообщение об ошибке, соответствующее внутреннему коду ошибки errorcode функций графики Turbo С. Функция grapherrormsg() возвращает указатели на сообщения на английском языке. В принципе несложно выполнить их "перевод" непосредственно, переработав саму функцию grapherrormsg(). Табл. 2.3. Коды ошибок, возвращаемые при выполнении функций графической библиотеки Turbo С.
Определение и установка графического режима После того, как проведена инициализация графической системы, может быть установлен другой, не превосходящий максимального, режим видеоадаптера и выбраны цвета для пикселов. Установку режима выполняет функция setgraphmode(). Целая группа функций – getgraphmode(), getmaxmode(), getmodename() , getmoderange() - упрощает работу по определению текущего установленного режима. Две функции позволяют определить ширину и высоту экрана в пикселах для текущего видеорежима: getmaxx() и getmaxy(). Функция restorecrtmode() возвращает видеоадаптер в текстовый режим. Далее следует описание упомянутых функций. #include < graphics . h > Int getgraphmode (void) Возвращает текущий графический режим, установленный для графической модели Turbo С функциями initgraph() или setgraphmode(). Возвращаемое значение соответствует номеру режима, установленному для инсталлированного драйвера графики. Возвращаемое значение соответствует числовому значению символических констант режима, перечисленных в табл. 2 .1. #include <graphics.h> Int getmaxmode(void) Возвращает число, определяющее максимально возможный для инсталлированного .BGI-драйвера режим. Как и в предыдущем случае, возвращаемое значение соответствует номеру режима, установленному для инсталлированного драйвера графики. Возвращаемое значение соответствует числовому значению символических констант режима, перечисленных в табл. 2.1. #include <graphics.h> Int getmaxx(void) Int getmaxy(void) Возвращают максимальные значения координат X и Y для текущего видеорежима. Например, для режима CGA0 getmaxx() возвращает значение 319, a getmaxy() -199. Функции особенно полезны для центрирования изображений и определения таких размеров знакомест при выводе текста в графическом режиме, чтобы текст помещался в заданную область экрана. #include <graphics.h> char * getmodename(int mode_number) Возвращает указатель на ASCIIZ-строку символов, содержащую имя символической константы, соответствующей режиму mode_number. Значение mode_number должно быть в пределах диапазона значений, возвращенных функцией getmaxmode() (для любого драйвера) или getmoderange() (для драйвера Borland International). #include <graphics.h> Void setgraphmode(int mode) Устанавливает видеосистему в режим, заданный значением переменной mode, и сбрасывает значения внутренних переменных системы графики Turbo С в их значения по умолчанию (стиль линий, маска заполнения, шрифт и т.д.). Значение mode соответствует числовому значению символических констант режима, перечисленных в табл. 2.1. При задании недопустимого режима для текущего .BGI-драйвера функция устанавливает внутренний код ошибки -1 (см. табл. 2.3). Обычно функция используется для обратного переключения в графический режим после того, как видеоадаптер был на время переключен функцией restorecrtmode() в текстовый режим. Однако функция может использоваться для переключения и из одного графического режима в другой, не выходящий за диапазон допустимых режимов.
# include <graphics.h> Void restorecrtmode(void) Возвращает видеоадаптер в режим, в котором он был до выполнения инициализации системы графики Turbo С. Как правило, исходным режимом будет текстовый. В том случае, если выполняется временный возврат в исходный (текстовый) режим, перед выполнением функции restorecrtmode() в переменной следует сохранить текущий графический режим, используя, например, обращение к функции getgraphmode(), после чего возможен возврат в графический режим с помощью функции setgraphmode().
![]() |