Справочник по C/C++
installuserdriver()

#include <graphics.h>

int far  installuserdriver()

Параметры

char far *name имя файла нового драйвера
int huge(*detect)(void) указатель на дополнительную функцию автоопределения

Описание

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

Ф. позволяет вам добавлять дополнительные драйверы во встроенную 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 для того, чтобы выбрать вручную вновь добавленный драйвер.

#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);
	}
}

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

installuserfont() — загружает файл со шрифтом


Реклама