Функция RegisterBGIDriver

Модуль Graph

Передает графической системе указатель на драйвер устройства.

Объявление:

Function RegisterBGIDriver(Driver : Pointer) : Integer;
 

Режим: 

Замечания:

Драйвер должен быть зарегистрирован перед обращением к InitGraph.

Если происходит ошибка, то функция возвращает значение меньшее нуля, иначе возвращается внутренний номер драйвера в системе.

Эта подпрограмма дает возможность пользователю загрузить и зарегистрировать драйвер, передавая его расположение в памяти в функцию RegisterBGIDriver.

При вызове InitGraph, будет использоваться этот драйвер, вместо загружаемогос диска модулем Graph.

Зарегистрированный пользователем драйвер может быть загружен с диска в кучу (heap) или преобразован в *.OBJ файл (с помощью BINOBJ.EXE) и скомпонован с *.EXE

Возвращает ошибку grInvalidDriver, если заголовок драйвера не распознан.

Следующая программа загружает драйвер CGA драйвер в кучу, регистрирует его графической системе и вызывает InitGraph:

Program LoadDriv; Uses Graph; Var Driver, Mode : Integer; DriverF : File; DriverP : Pointer; Begin { Открываем файл драйвера, считываем и регистрируем его } Assign(DriverF, 'C:\BP\BGI\CGA.BGI'); Reset(DriverF, 1); GetMem(DriverP, FileSize(DriverF)); BlockRead(DriverF, DriverP^, FileSize(DriverF)); If RegisterBGIDriver(DriverP) < 0 Then Begin Writeln('Ошибка регистрации драйвера: ', GraphErrorMsg(GraphResult)); Halt(1); End; { Инициализация графики } Driver:=CGA; Mode:=CGAHi; InitGraph(Driver, Mode, ''); If GraphResult < 0 Then Halt(1); OutTextXY(GetMaxX Div 2, GetMaxY Div 2, 'Driver loaded successfully'); ReadLn; CloseGraph; End.

Программа загружает файл драйвера CGA с диска, регистрирует его. Затем вызывается InitGraph, чтобы инициализировать графическую систему. При желании, вы можете встроить несколько драйверов непосредственно в ваш *.EXE файл. Таким образом, графические драйверы, которые необходимы для работы вашей программы, будут встроены в нее.

Встроить драйвер в вашу программу можно так:

  • Запустить программу binobj.exe или bgiobj.exe на файле драйвера.
  • Скомпоновать полученный *.OBJ файл с вашей программой.
  • Зарегистрировать файл драйвера перед вызовом InitGraph

Пример:

  Uses Graph;
 
  Var Driver, Mode : Integer;
           DriverF : File;
           DriverP : Pointer;
  Begin
   { Загружаем и регистрируем файл драйвера }
   Assign(DriverF, 'CGA.BGI');
   Reset(DriverF, 1);
   GetMem(DriverP, FileSize(DriverF));
   BlockRead(DriverF, DriverP^, FileSize(DriverF));
   If RegisterBGIDriver(DriverP) < 0 Then
    Begin
     WriteLn('Ошибка регистрации драйвера: ', GraphErrorMsg(GraphResult));
     Halt(1);
    End;
   { Инициализируем графику }
 Driver:=CGA;
 Mode:=CGAHi;
 InitGraph(Driver, Mode, '');
 If GraphResult < 0 Then Halt(1);
 OutTextXY(GetMaxX Div 2, GetMaxY Div 2, 'Driver loaded successfully');
 ReadLn;
 CloseGraph;
End.
 
 

См. также:  InitGraph