Russian Belarusian English German Japanese Ukrainian

Installuserdriver

CuBook05

Функция

Добавляет дополнительные драйверы устройств в таблицу драйверов устройств BGI.
 
Синтаксис

#include <graphics.h>
int far installuserdriver(char far *name, int huge(*detect)(void));
 
Прототип

graphics.h
 
Описание

Функция installuserdriver позволяет вам добавлять дополнительные драйверы во встроенную BGI таблицу. Параметр name - это имя (.BGI) файла нового драйвера, а параметр detect - указатель на дополнительную функцию автоопределения, которая может сопровождать новый драйвер. Эта функция не берет никаких параметров и возвращает целое значение.

Существует два способа использования драйверов, поставляемых продавцами. Предположим у вас есть новая видеоплата, называющаяся Spiffy Graphic Array (SGA) и производитель этой SGA обеспечивает вас также BGI-драйвером (SGA.BGI). Наипростейший способ использования драйвера состоит в добавлении его с помощью installuserdriver, а затем передаче возвращаемого значения (присвоенный номер драйвера) непосредственно в initgraph.

Другой, более общий способ использования этого драйвера состоит во встраивании его в функцию автоопределения, которая вызывается initgraph как часть его драйвероопределяющей логики (вероятно, производитель SGA дал вам эту функцию автодетектирования). Когда вы добавите драйвер с помощью installuserdriver, вы передадите адрес этой функции вместе с именем файла драйвера устройства.

После того как вы добавили имя файла драйвера и SGA-функцию автодетектирования, вы вызываете initgraph и позволяете ему выполнять нормальный процесс автодетектирования. Перед тем как initgraph вызовет встроенную функцию автодетектирования(detectgraph), он вызовет SGA-функцию автодетектирования. Если эта SGA-функция не находит аппаратные средства SGA, она возвращает значение -11 (grError), а initgraph продолжает нормальный процесс автодетектирования, который может включать вызов других поставленных производителем функций автодетектирования в том порядке в каком они были добавлены). Если же, однако, функция определит, что SGA присутствует, она возвращает неотрицательный номер режима; затем initgraph находит и загружает SGA.BGI, переводит аппаратные средства в графический режим, рекомендуемый функцией автодетектирования, и, наконец, передает управление вашей программе.

Одновременно может быть добавлено до десяти драйверов.
 
Возвращаемое значение

Значение возвращаемое installuserdriver - это номер драйвера, который вы передадите в initgraph для того, чтобы выбрать вручную вновь добавленный драйвер.
 
Переносимость

Функция уникальна для Borland C++. Эта функция пригодна только для компьютеров IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим. Функция не совместима с Windows.
 
Пример

#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();
/* нарисовать линию */
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);
}
}
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий