Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)


 

 

 

 



Обработка ошибок системы графики 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 С.

 

Символическая константа из graphics_errors Значение (в 10 с/с) Описание
grOk Отсутствие ошибки
grNoInitGraph -1 Графический интерфейс (.BGI-драйвер) не инсталлирован. Следует выполнить initgraph()
grNotDetected -2 Не обнаружен видеоадаптер, способный работать в запрошенном (или любом в случае DETECT) графическом режиме
grFileNotFound -3 Не найден по заданному маршруту и в текущем директории .BGI-файл
grlnvalidDriver -4 Заданный в качестве .BGI-драйвера файл не соответствует стандарту Turbo С
grNoLoadMem -5 Недостаточно свободной памяти для загрузки драйвера и хранения промежуточных результатов
grNoScanMem -6 Нехватка памяти при выполнении графических функций заполнения
grNoFloodMem -7 Нехватка памяти при выполнении графических функций заполнения
grFontNotFound -8 Не найден файл описания шрифта
grNoFontMem -9 Отсутствие памяти для загрузки файла шрифта
grlnvalidMode -10 Недопустимый графический режим для выбранного .BGI-драйвера
grError -11 Ошибка функции графики
grIOerror -12 Ошибка ввода-вывода в графическом режиме
grlnvalidFont -13 Файл шрифта, не соответствующий стандарту Borland International
grlnvalidFontNum -14 Недопустимый номер шрифта
grlnvalidDeviceNum -15 Недопустимый номер устройства
grlnvalidVersion -18 Недопустимый номер версии .BGI-драйвера (.BGI-драйвер для Turbo С версии 1.5)

 

Определение и установка графического режима

После того, как проведена инициализация графической сис­темы, может быть установлен другой, не превосходящий мак­симального, режим видеоадаптера и выбраны цвета для пикселов. Установку режима выполняет функция 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().

 



Просмотров 783

Эта страница нарушает авторские права




allrefrs.su - 2025 год. Все права принадлежат их авторам!