installuserdriver

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

 Синтаксис          #include 
                    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 дал
                    вам эту функцию автодетектирования). Когда
                    вы добавите драйвер с помощью installuser-
                    driver, вы передадите адрес этой функции
                    вместе с именем файла драйвера устройства.

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

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

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

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

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

 #include
 #include
 #include
 #include

 /* прототипы функций */
 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);
    }
 }




   cpp

     installuserfont

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

 Синтаксис          #include 
                    int far installuserfont(char far *name);

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

 Описание           name - полное имя шрифтового файла, содер-
                    жащего штриховые шрифты. Одновременно может
                    быть добавлено до двадцати шрифтов.

 Возвращаемое       installuserfont возвращает ID-номер шриф-
 значение           та, который затем может передаваться в
                    settextstyle для выбора соответствующего
                    шрифта. Если внутренняя таблица шрифтов за-
                    полнена, то возвращаемое значение равно -11
                    (grError).

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

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

 #include
 #include
 #include
 #include

 /* прототипы функций */
 void checkerrors(void);

 int main(void)
 {
    int gdriver = DETECT,gmode;
    int userfont;
    int midx,midy;

    /* инициализация графики и локальных переменных */
    initgraph(&gdriver,&gmode,"");
    midx = getmaxx()/2;
    midy = getmaxy()/2;
    /* проверить на ошибки инициализации */
    checkerrors();
    /* инсталлировать шрифт, написанный пользователем */
    userfont = installuserfont("USER.CHR");
    /* проверить на ошибки инсталляции */
    checkerrors();
    /* выбрать пользовательский шрифт */
    settextstyle(userfont,HORIS_DIR,4);
    /* вывести некоторый текст */
    outtextxy(midx,midy,"Тест");
    /* очистка */
    getch();
    closegraph();
    return 0;
 }
 /* проверка и сообщение о появлении ошибок */
 void checkerrors(void)
 {
    int errorcode;
    errorcode = graphresult();
    if(errorcode != grOk)
    {
       printf("Ошибка графики %s\n",grapherrormsg(errorcode));
       printf("Для завершения нажмите любую клавишу... ");
       getch();
       exit(1);
    }
 }