CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
initgraph
initgraph
Функция Инициализирует графическую систему.
Синтаксис #include <graphics.h>
void far initgraph(int far *graphdriver,
int far *graphmode, char far *pathtodriver)
Файл, содержащий graphics.h
прототип
Описание initgraph инициализирует графическую систему путем
загрузки графического драйвера с диска (или
подтверждения работоспособности
зарегестрированного драйвера) и переводит систему
в графический режим.
Для того чтобы запустить графическую систему,
прежде всего вызовите функцию initgraph. initgraph
загружает графический драйвер и переводит систему
в графический режим. Вы можете указать графической
системе использовать конкретный графический
драйвер и режим, или, чтобы она сама определила в
процессе работы привязанный к данной системе
видеоадаптер и выбратла соответствующий драйвер.
Если вы указали initgraph автоопределение она
вызывает detectgraph для выбора графического
драйвера и режима. initgraph также
переустанавливает все графические параметры в их
значения по умолчанию (текущая позиция, палитра,
цвет, окно экрана, и т. д.) и переустанавливает
grapgresult в 0.
Обычно initgraph загружает графический драйвер
путем выделения памяти для драйвера (с помощью
функции _graphgetmem), затем загружает
соответствующий файл .BGI с диска. В
противоположность этой схеме динамической
загрузки, вы можете присоединить файл графического
драйвера (или несколько таких файлов)
непосредственно к выполняемым файлам. Смотрите
более подробную информацию в файле UTIL.DOC,
который поставляется вместе с системой.
pathodriver определяeт маршрут по которому
initgraph будет искать графические драйверы.
initgraph сначала ищет по маршруту, определяемому
в pathtodriver, затем ( если их там нет) ищет в
текущем каталоге. Следовательно, если pathtodriver
равен NULL, файлы драйвера (*.BGI) должны быть в
текущем каталоге. Таким же путем settexstyle будет
искать файлы (.CHR), содержащие шрифты.
*graphdriver - целое, которое определяет
используемый графический драйвер. Вы можете задать
его значение, используя константу graphics_driver
перечисляемого типа, определенного в graphics.h и
показанного в таблице 2.3.
Таблица 2.3. Константы графических драйверов.
_____________________________________________
graphics_drivers
константа численное значение
_____________________________________________
DETECT 0 (запрашивает
автоопределе-
ние драйвера)
CGA 1
MCGA 2
EGA 3
EGA64 4
EGAMONO 5
IBM8514 6
HERCMONO 7
ATT400 8
VGA 9
PC3270 10
_____________________________________________
*graphmode - целое, которое определяет исходный
графический режим (если *graphdriver не равен
DETECT, *graphmode устанавливается в наивысшее
разрешение, допустимое для данного драйвера). Вы
можете задать значение *graphmode, используя
константу перечисляемого типа graphics_modes,
определенную в graphics.h и приведенную в таблице
2.5.
Замечание: Значения graphdriver и graphmode должны
быть установлены в значения из таблиц 2.5 и 2.3,
иначе вы получите непредсказуемый результат.
Исключение составляет лишь случай, когда
graphdriver = DETECT.
В таблице 2.5, элементы столбца "Палитра" C0, C1,
C2 и C3 относятся к четырем ранее определенным
четырехцветным палитрам, действительным для CGA и
совместимых систем. Вы можете выбрать цвет фона
(элемент #0), но остальные цвета не меняются. Эти
палитры подробно описаны в главе 8 "Видео-функции"
в "Руководстве программиста" (в разделе
"Управление цветом"), и коротко описаны в таблице
2.4.
Таблица 2.4. Палитры цветов.
-----------------------------------------------------------
Номер Константа присвоенная значению пиксела
палитры 1 2 3
-----------------------------------------------------------
0 CGA_LIGHTGREEN CGA_LIGHTRED CGA_YELLOW
1 CGA_LIGHTCYAN CGA_LIGHTMAGENTA CGA_WHITE
2 CGA_GREEN CGA_RED CGA_BROWN
3 CGA_CYAN CGA_MAGENTA CGA_LIGHTGRAY
------------------------------------------------------------
После обращения к initgraph *graphdriver
устанавливается в текущий графический драйвер, а
*graphmode в текущий графический режим.
Таблица 2.5. Графические режимы.
--------------------------------------------------------------
Графическ. graphics Знач. Колонок Палитра Страниц
драйвер _modes * столбцов
--------------------------------------------------------------
CGA CGAC0 0 320 x 200 C0 1
CGAC1 1 320 x 200 C1 1
CGAC2 2 320 x 200 C2 1
CGAC3 3 320 x 200 C3 1
CGAHI 4 640 x 200 2цвета 1
MCGA MCGAC0 0 320 x 200 C0 1
MCGAC1 1 320 x 200 C1 1
MCGAC2 2 320 x 200 C2 1
MCGAC3 3 320 x 200 C3 1
MCGAMED 4 640 x 200 2цвета 1
MCGAHI 5 640 x 480 2цвета 1
EGA EGALO 0 640 x 200 16цветов 4
EGAHI 1 640 x 350 16цветов 2
EGA64 EGA64LO 0 640 x 200 16цветов 1
EGA64HI 1 640 x 350 4 цвета 1
EGA- EGAMONOHI 3 640 x 350 2 цвета 1*
MONO EGAMONOHI 3 640 x 350 2 цвета 2**
HERC HERCMONOHI 0 720 x 348 2 цвета 2
AT400 ATT400C0 0 320 x 200 C0 1
ATT400C1 1 320 x 200 C1 1
ATT400C2 2 320 x 200 C2 1
ATT400C3 3 320 x 200 C3 1
ATT400MED 4 640 x 200 2 цвета 1
ATT400HI 5 640 x 400 2 цвета 1
VGA VGALO 0 640 x 200 16цветов 2
VGAMED 1 640 x 350 16цветов 2
VGAHI 2 640 x 380 16цветов 1
PC3270 PC3270HI 0 720 x 350 2 цвета 1
IBM8514 IBM8514HI 0 640 x 480 256цветов
IBM8514LO 0 1024 x 768 256цветов
* 64К на плате EGAMONO
** 256К на плате EGAMONO
--------------------------------------------------------------
Возвращаемое initgraph всегда устанавливает внутренний код
значение ошибки. В случае успешного выполнения код равен 0.
В случае же ошибки *graphdriver устанавливается в
-2, -3, -4 или -5, и graphresult возвращает
соответствующие значения, перечисленные ниже:
-2 - Не может определить тип графической
карты (grNotDetected).
-3 - Не может найти файл драйвера
(grFileNotFound).
-4 - Неправильный драйвер (grInvalidDriver).
-5 - Недостаточно памяти для загрузки
драйвера (grNoLoadMem).
Переносимость Функция уникальна для Borland C++. Она работает
только на компьютерах IBM PC и совместимых с ними,
оснащенных дисплейными адаптерами, поддерживающими
графический режим. Функция не совместима с
Windows.
Смотри также сlosegraph, detectgraph, getdefaultpalette,
getdrivername, getgraphmode, getmoderange,
graphdefault, _graphgetmem, graphresult,
installuserdriver, registerbgidriver,
registerbgifont, restorecrtmode, setgraphbufsize,
setgraphmode
Пример:
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
/* требуется автоопределение */
int graphdriver = DETECT, gmode, errorcode;
/* мнмцмализация графического режима */
initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk) /* если ошибка */
{
printf("Ошибка :%s\n",grapherrormessage(errorcode));
printf("Для останова нажмите любую клавишу\n");
getch();
exit(1); /* завершение с кодом ошибки */
}
line(0,0,getmaxx(),getmaxy());
getch();
closegraph();
return 0;
}
