HOME ПРИМЕРЫ THANKS НОВИЧКАМ ДОКИ LINKS JavaScript Mail


 
В этот день много лет назад...
23 ноября. В 1935 году (82 года назад) - Американский исследователь Линкольн ЭЛЛСУОРТ впервые пролетает на самолете через всю Антарктиду, от моря Уэдделла до моря Росса.
 
 

Turbo Pascal Documentation

Функция RegisterBGIfont


     Функция:  Регистрирует  загружаемый  пользователем  или
скомпонованный  с программой шрифт формата BGI (формат фирмы
Борланд) в графической системе.
     Описание: RegisterBGIfonr(шрифт : pointer) : integer;
     Примечания: В случае ошибки возвращаемое значение будет
меньше  0.  В противном случае возвращается внутренний номер
шрифта. Эта программа позволяет пользователю загрузить  файл
шрифта и "зарегистрировать" шрифт, передав его адрес в памя-
ти процедуре RagisterBGIfont. После этого данный шрифт можно
выбирать  с помощью обращения к процедуре SetTextStyle. Выб-
ранный шрифт будет непосредственно использоваться без  необ-
ходимости  загрузки его с диска модулем Graph. Зарегистриро-
ванный пользователем шрифт можно загрузить с диска в динами-
чески распределяемую область памяти или преобразовать (с по-
мощью утилиты BINOBJ.EXE) в файл .OBJ, а затем  скомпоновать
с программой в выполняемый файл.
     Приведем перечень некоторых возможных ошибок:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Код ошибки  Идентификатор ошибки         Комментарий
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-11            grError            При регистрации еще одно-
                                   го шрифта не хватает мес-
                                   та для таблицы шрифтов.
                                   (Таблица шрифтов может
                                   содержать до 10 шрифтов,
                                   из них в стандартной кон-
                                   фигурации имеется только
                                   4, поэтому эта ошибка
                                   возникать не должна.)

-13           grInvalidFont       Не распознан заголовок шрифта.

-14         grInvalidFontNum      Не распознан номер шрифта
                                   в заголовке шрифта.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

     Следующая программа загружает в динамически распределя-
емую  область  шрифт triplex, регистрирует его в графической
системе, а зетем предоставляет возможность выбора между этим
шрифтом  и  другим  штриховым  шрифтом, который модуль Graph
загружает с диска (SansSerifFont).

  program LoadFont;
  uses Graph;
  var Driver, Mode : integer;
      FontF : file;
      FontP : pointer;
  begin
  { открыть файл шрифта, считать его в память и
    зарегистрировать }
    Assign(FontF, 'TRIP.CHR');
    Reset(FontF, 1);
     GetMem(FontP, FontP^, FileSize(FontF));
    if RegisterBGIfont(FontP) < 0 then
    begin
      Writeln('Ошибка регистрации шрифта: ',
               GraphErrorMsg(GraphResult));
      Halt(1);
    end;
    { инициализировать графику }
    Driver := Detect;
    InitGraph(Driver, Mode, '..\');
    if GraphResult < 0 then
       Halt(1);
    Readln;
    { выбрать зарегистрированный шрифт }
    SetTextStyle(TriplexFont, HorizDir, 4);
    OutText('Программой загружен шрифт Triplex');
    MoveTo(0, TextHeight('a'));
    Readln;
    { Повторно выбрать зарегистрированный шрифт
      (уже загруженный в память }
    SetTextStyle(TriplexFont, HorizDir, 4);
    OutText('Программой снова выбран шрифт Triplex');
    Readln;
    CloseGraph;
  end.

     Программа начинает свою работу с загрузки с диска шриф-
та Triplex и регистрации его модулем Graph. Затем для иници-
ализации графической системы вызывается процедура InitGraph.
Проверьте,  есть  ли  обращение  к  диску  и нажмите клавишу
ENTER. Поскольку теперь шрифт Triplex уже загруже в память и
зарегистрирован, модулю Graph не нужно считывать его с диска
(таким образом, отпадает необходимость обращения к  дисково-
ду).  Затем программа активизирует шрифт SansSerifFont, заг-
ружая его с диска (он  не  зарегистрирован).  Снова  нажмите
клавишу  ENTER  и посмотрите, есть ли обрашение к диску (при
обращении к диску загорается  лампочка-индикатор  на  панели
компьютера).   Наконец,   программа   снова  выбирает  шрифт
Triplex. Поскольку он уже зарегистрирован, то при этом прог-
рамма, когда вы нажмете клавишу ENTER, обращаться к диску не
будет.
     Для загрузки и регистрации файлов шрифтов имеется  нес-
колько  причин. Во-первых, модель Graph в каждый момент вре-
мени хранит в памяти только один штриховой шрифт. Если у вас
имеется программа, которая должна быстро переключаться с од-
ного шрифта не другой, то возможно вы предпочтете  в  начале
программы  выполнить регистрацию и загрузку шрифта. При этом
при обращении к процедуре SetTextStyle модулю Graph не пона-
добится каждый раз загружать и разгружать шрифт.
     Во-вторых, вы можете захотеть  разместить  файл  шрифта
непосредственно  в  вашем  файле  .EXE.  Таким образом, файл
шрифта, который использует ваша программа, окажется встроен-
ным,  и для запуска программы потребуется только выполняемый
файл (файл .EXE). Процесс размещения файла шрифта в выполня-
емом файле довольно прост и состоит в следующем:

     1.  Выполнить для файла (или файлов) программу BINOBJ.
     2.  Скомпоновать  результирующие  файлы  ,OBJ  с  вашей
         программой.
     3.  Перед вызовом процедуры Init зарегистрировать ском-
         понованные файлы (файл) драйвера.

     Более подробное описание этого процесса можно  найти  в
комментариях,   содержащихся   в   шапке   программы-примера
GRLINK.PAS на диске 3. Документация по утилите BINOBJ содер-
жится в Приложении С "Руководства пользователя".
     Заметим, что в используемый по умолчанию шрифт (с бито-
вым  отображением  8х8)  встроен в модель GRAPH.TPU и, таким
образом, все время находится в памяти. При выборе и загрузке
штрихового  шрифта ваша программа имеет возвожность переклю-
чаться между используемым по умолчанию и  штриховым  шрифтом
без необходимости перезагружать какой-либо из них.
     Можно также регистрировать файлы драйверов (см.  описа-
ние функции RegisterBGIdriver.
     Аналогичная функция имеется в версии 2.0 Турбо-Си.
     Прочее:   См.   также    процедуры    SetTextStyle    и
InstallUserFont.




HOME