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; }