Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TCLR-3Ar.doc
Скачиваний:
48
Добавлен:
12.07.2019
Размер:
664.58 Кб
Скачать

Initgraph как часть его драйвероопределяю-

щей логики (вероятно, производитель SGA дал

вам эту функцию автодетектирования). Когда

вы добавите драйвер с помощью installuser-

driver, вы передадите адрес этой функции

вместе с именем файла драйвера устройства.

После того как вы добавили имя файла драй-

-251-

вера и SGA-функцию автодетектирования, вы

вызываете initgraph и позволяете ему выпол-

нять нормальный процесс автодетектирования.

Перед тем как initgraph вызовет встроенную

функцию автодетектирования(detectgraph),

он вызовет SGA-функцию автодетектирования.

Если эта SGA-функция не находит аппаратные

средства SGA, она возвращает значение -11

(grError), а initgraph продолжает нормаль-

ный процесс автодетектирования, который мо-

жет включать вызов других поставленных про-

изводителем функций автодетектирования в

том порядке в каком они были добавлены).

Если же, однако, функция определит, что SGA

присутствует, она возвращает неотрицатель-

ный номер режима; затем initgraph находит и

загружает SGA.BGI, переводит аппаратные

средства в графический режим, рекомендуемый

функцией автодетектирования, и, наконец,

передает управление вашей программе.

Одновременно может быть добавлено до десяти

драйверов.

Возвращаемое Значение возвращаемое installuserdriver -

значение это номер драйвера, который вы передадите

в initgraph для того, чтобы выбрать вручную

вновь добавленный драйвер.

Переносимость Функция уникальна для Turbo C++. Эта функция

пригодна только для компьютеров IBM PC и совмести-

мых с ними, оснащенных дисплейными адаптерами,

поддерживающими графический режим.

Смотри также initgraph, registerbgidriver

Пример:

#include<graphics.h>

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

/* прототипы функций */

int huge detectEGA(void);

void checkerrors(void);

int main(void)

{

int gdriver,gmode;

/* инсталлировать драйвер, написанный пользователем */

gdriver = installuserdriver("EGA",detectEGA);

/* инициировать автоопределение */

gdriver = DETECT;

/* проверить на ошибки инсталляции */

checkerrors();

/* инициализация графики и локальных переменных */

initgraph(&gdriver,&gmode,"");

/* проверить на ошибки иннициализации */

checkerrors();

/* нарисовать линию */

-252-

line(0,0,getmaxx(),getmaxy());

/* очистка */

getch();

closegraph();

return 0;

}

/* определение платы EGA или VGA */

int huge detectEGA(void)

{

int driver, mode, sugmode = 0;

detectgraph(&driver,&mode);

if((driver == EGA) || (driver == VGA))

/* вернуть предполачаемый номер режима */

return sugmode;

else

/* вернуть код ошибки */

return grError;

}

/* проверка и сообщение о появлении ошибок */

void checkerrors(void)

{

int errorcode;

errorcode = graphresult();

if(errorcode != grOk)

{

printf("Ошибка графики %s\n",grapherrormsg(errorcode));

printf("Для завершения нажмите любую клавишу... ");

getch();

exit(1);

}

}

installuserfont

Функция Загружает файл со шрифтом (.CHR), который не

встроен в BGI-систему.

Синтаксис #include <graphics.h>

int far installuserfont(char far *name);

Файл, содержащий graphics.h

прототип

Описание name - полное имя шрифтового файла, содер-

жащего штриховые шрифты. Одновременно может

быть добавлено до двадцати шрифтов.

Возвращаемое installuserfont возвращает ID-номер шриф-

значение та, который затем может передаваться в

settextstyle для выбора соответствующего

шрифта. Если внутренняя таблица шрифтов за-

полнена, то возвращаемое значение равно -11

(grError).

Переносимость Функция уникальна для Turbo C++. Эта функция

пригодна только для компьютеров IBM PC и совмести-

мых с ними, оснащенных дисплейными адаптерами,

поддерживающими графический режим.

Смотри также settextstyle

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]