Четвертый BORLAND С++ и его окружение




Управление графической системой - часть 3


диска соответствующий файл .BGI. В качестве альтернативы данной

схеме динамической загрузки вы можете скомпоновать нужный файл

графического драйвера (или несколько таких файлов) непосредственно с файлом выполняемой программы. Для этого файл .BGI сначала

преобразуется в файл .OBJ (при помощи утилиты BGIOBJ - см. документацию в файле UTIL.DOC, который поставляется на одном из дистрибутивных дисков), после чего в исходный код помещается вызов

функции registerbgidriver (до вызова initgraph), чтобы зарегистрировать графический драйвер(ы) в системе. При построении программы вы должны выполнить компоновку файлов .OBJ всех зарегистрированных драйверов.

После определения того, какой графический драйвер должен использоваться (посредством detectgraph) функция initgraph проверяет, был ли желаемый драйвер зарегистрирован. Если был, то initgraph обращается к зарегистрированному драйверу непосредственно в памяти. В противном случае функция initgraph распределяет память для драйвера и загружает нужный файл .BGI с диска.

Использование функции registerbgidriver относится к более

сложным методам программирования, не рекомендуемым для начинающих

программистов.

Во время выполнения графической системе может понадобиться

распределить память для драйверов, шрифтов и внутренних буферов.

При необходимости она вызывает функцию _graphgetmem для распределения памяти и функцию _graphfreemem для ее освобождения. По

умолчанию данные подпрограммы просто вызывают функции malloc и

free, соответственно.

Действие этих функций по умолчанию можно переопределить, определив собственные функции _graphgetmem и _graphfreemem. Благодаря этому вы можете сами управлять распределением памяти для

графики. Однако, ваши варианты функций управления распределением

памяти должны иметь те же имена: они заменят собой используемые

по умолчанию функции с теми же именами из стандартных библиотек

языка Си.

Определив собственные функции _graphgetmem и _graphfreemem,

вы можете получить предупреждение "duplicate symbols" ("повторение символических имен"). Это предупреждение можно игнорировать.




Содержание  Назад  Вперед