Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TCLR-3Ar.doc
Скачиваний:
49
Добавлен:
12.07.2019
Размер:
664.58 Кб
Скачать

Initgraph загружает графический драйвер и

переводит систему в графический режим.

Вы можете указать графической системе ис-

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

режим, или, чтобы она сама определила в процессе

работы привязанный к данной системе видеоадаптер

и выбратла соответствующий драйвер. Если вы указа-

ли initgraph автоопределение она вызывает

detectgraph для выбора графического драйвера и

режима. initgraph также переустанавливает все

графические параметры в их значения по умолча-

нию (текущая позиция, палитра, цвет, окно экрана,

и т. д.) и переустанавливает grapgresult в 0.

Обычно initgraph загружает графический драйвер

путем выделения памяти для драйвера (с помощью

функции _graphgetmem), затем загружает соответст-

вующий файл .BGI с диска. В противоположность этой

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

нить файл графического драйвера (или несколько та-

ких файлов) непосредственно выполняемым файлом.

Смотрите более подробную информацию в BGIOBJ.

pathodriver определяeт маршрут по которому

initgraph будет искать графические драйверы.

initgraph сначала ищет по маршруту, определяемому

в pathtodriver, затем ( если их там нет) ищет в

текущей директории. Следовательно, если

pathtodriver равен NULL, файлы драйвера (*.BGI)

должны быть в текущей директории. Таким же путем

settexstyle будет искать файлы (.CHR), содержащие

шрифты.

*graphdriver - целое, которое определяет исполь-

зуемый графический драйвер. Вы можете задать его

значение, используя константу graphics_driver пе-

речисляемого типа, определенного в graphics.h и

показанного в следующей таблице.

________________________________________

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 устанавливается в наивысшее

разрешение, допустимое для данного драйвера). Вы

-246-

можете задать значение *graphmode, используя конс-

танту перечисляемого типа graphics_modes, опреде-

ленную в graphics.h и показанную в следующей таб-

лице:

---------------------------------------------------------------

Графическ. 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

--------------------------------------------------------------

Замечание:Основная причина вызова непосредственно

detectgraph состоит в переопределении графического

режима, который detectgraph рекомендовал

initgraph.

В приведенной таблице, элементы столбца "Палитра"

C0, C1, C2 и C3 относятся к четырем ранее опреде-

-247-

ленным четырехцветным палитрам, действительным для

CGA и совместимых систем. Вы можете выбрать цвет

фона( элемент #0 ), но остальные цвета не меняют-

ся. Эти палитры подробно описаны в главе 5 "Ви-

део-функции" в "Руководстве пользователя по Turbo

C " и суммированы в следующей таблице:

-----------------------------------------------------------

Номер Константа присвоенная значению пиксела

палитры 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 в текущий графический режим.

Возвращаемое initgraph всегда устанавливает внутренний

значение код ошибки. В случае успешного выполнения

код равен 0. В случае же ошибки

*graphdriver устанавливается в -2, -3, -4

или -5, и graphresult возвращает соответс-

твующие значения, перечисленные ниже:

-2 не может определить тип графической

карты (grNotDetected)

-3 не может найти файл драйвера

(grFileNotFound)

-4 неправильный драйвер (grInvalidDriver)

-5 недостаточно памяти для загрузки

драйвера (grNoLoadMem)

Переносимость Функция уникальна для Turbo C++. Она работает

только на компьютерах IBM PC и совместимых с ними,

оснащенных дисплейными адаптерами, поддерживающими

графический режим.

Смотри также closegraph, 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;

/* мнмцмализация графического режима */

-248-

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;

}

inport

Функция Считывает слово из порта.

Синтаксис #include <dos.h>

int inport(int portid);

Файл, содержащий dos.h

прототип

Описание inport работае аналогично команде процессорора

80x86 IN. Она считывает младший бай слова из вход-

ного порта, заданного параметром portid, а старший

байт из порта portid+2.

Возвращаемое Функции inport возвращают прочитанное значение.

значение

Переносимость Функция уникальна для микропроцессоров семейства

8086.

Смотри также inportb, outport, outportb.

Пример:

#include<stdio.h>

#include<dos.h>

int main(void)

{

int result;

int port = 0; /* последовательный порт 0 */

result = inport(port);

printf("Слово, считанное из порта %d = 0x%X\n",port,result);

return 0;

}

inportb

Функция Считывает байт из порта.

Синтаксис #include <dos.h>

int inport(int port);

-249-

Файл, содержащий dos.h

прототип

Описание inportb - это макрокоманда, которая считывает байт

из порта, определяемого параметром port. Если вы

подключили файл dos.h, то inportb рассматривается

как макрокоманда, которая расширяется до встроен-

ного кода. Если вы не включите dos.h, или отмените

определение макрокоманды с помощью инструкции

#undef, то получите функцию.

Возвращаемое inportb возвращает прочитанное значение.

значение

Переносимость Функция уникальна для микропроцессоров семейства

8086.

Смотри также inport, outport, outportb.

Пример:

#include<stdio.h>

#include<dos.h>

int main(void)

{

unsigned char result;

int port = 0; /* последовательный порт 0 */

result = inportb(port);

printf("Байт, считанный из порта %d = 0x%X\n",port,result);

return 0;

}

insline

Функция Вставляет пустую строку в текстовом окне.

Синтаксис #include<conio.h>

void insline(void);

Файл, содержащий conio.h

прототип

Описание insline вставляет в текущем текстовом окне пустую

строку, пользуясь текущей позицией курсора и цве-

том фона. Все строки лежащие ниже данной прокру-

чиваются вниз. Самая нижняя строка исчезает.

insline используется в текстовом режиме.

Возвращаемое Нет.

значение

Переносимость insline работает только на компьютерах совместимых

с IBM PC, соответствующая функция есть в Turbo Pas-

cal.

Смотри также clreol, delline, window

Пример:

-250-

#include<conio.h>

int main(void)

{

clrscr();

cprintf("Функция INSLINE вставляет строку, по текущему по-\r\n");

cprintf("ложению курсора, использую текущий цвет фона.\r\n");

cprintf("Все строки ниже ее, сдвигаются вниз. \r\n");

cprintf("INSLINE работает в текущем активном \r\n");

cprintf("текстовом окне. Для продолжения нажмите клавишу...");

gotoxy(1,3);

getch();

insline();

getch();

return 0;

}

installuserdriver

Функция Добавляет дополнительные драйверы устройств

в таблицу драйверов устройств BGI.

Синтаксис #include <graphics.h>

int far installuserdriver(char far *name,

int huge(*detect)(void));

Файл, содержащий graphics.h

прототип

Описание installuserdriver позволяет вам добавлять

дополнительные драйверы во встроенную BGI

таблицу. Параметр name - это имя (.BGI) фай-

ла нового драйвера, а параметр detect -

указатель на дополнительную функцию автооп-

ределения, которая может сопровождать новый

драйвер. Эта функция не берет никаких пара-

метров и возвращает целое значение.

Существует два способа использования драй-

веров, поставляемых продавцами. Предположим

у вас есть новая видеокарта, называющаяся

Spiffy Graphic Array (SGA) и производитель

этой SGA обеспечивает вас также BGI-драйве-

ром (SGA.BGI). Наипростейший способ исполь-

зования драйвера состоит в добавлении его с

помощью installuserdriver, а затем передаче

возвращаемого значения (присвоенный номер

драйвера) непосредственно в initgraph.

Другой, более общий способ использования

этого драйвера состоит во встраивании его в

функцию автоопределения, которая вызывается

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]