Функция 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