detectgraph detects your system's graphics adapter and chooses the mode
that provides the highest resolution for that adapter. If no graphics
hardware is detected, *graphdriver is set to grNotDetected (-2), and
graphresult returns grNotDetected (-2).
*graphdriver is an integer that specifies the graphics driver to be used.
You can give it a value using a constant of the graphics_drivers
enumeration type defined in graphics.h and listed as follows:
graphics_drivers constant  ÂNumeric value
DETECT0 (requests autodetect)
CGA 1
MCGA 2
EGA 3
EGA64 4
EGAMONO 5
IBM8514 6
HERCMONO 7
ATT4008
VGA 9
PC327010
*graphmode is an integer that specifies the initial graphics mode (unless
*graphdriver equals DETECT; in which case, *graphmode is set to the
highest resolution available for the detected driver). You can give
*graphmode a value using a constant of the graphics_modes enumeration
type defined in graphics.h and listed as follows.
Graphics    Columns  Â
Drivergraphics_mode  Value   x Rows Palette  Pages
CGA CGAC00 320 x 200 C0 1
CGAC11 320 x 200 C1 1
CGAC22 320 x 200 C2 1
CGAC33 320 x 200 C3 1
CGAHI4 640 x 200 2 color 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 color 1
MCGAHI 5 640 x 480 2 color 1
Â
EGA EGALO0 640 x 200 16 color 4
Â
EGAHI1 640 x 350 16 color 2
Â
EGA64 EGA64LO 0 640 x 200 16 color 1
Â
EGA64HI 1 640 x 350 4 color 1
Â
EGA-MONO EGAMONOHI 3 640 x 350 2 color 1 w/64K
EGAMONOHI 3 640 x 350 2 color 2 w/256K
Â
HERC HERCMONOHI 0 720 x 348 2 color 2
Â
ATT400ATT400C0 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 color 1
ATT400HI 5 640 x 400 2 color 1
Â
VGA VGALO0 640 x 200 16 color 2
VGAMED 1 640 x 350 16 color 2
VGAHI2 640 x 480 16 color 1
Â
PC3270PC3270HI 0 720 x 350 2 color 1
IBM8514 IBM8514HI 0 640 x 480 256 color ?
IBM8514LO 0 1024 x 768 256 color ?
Note: The main reason to call detectgraph directly is to override the
graphics mode that detectgraph recommends to initgraph.
/* detectgraph example */
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
/* the names of the various cards supported */
char *dname[] = { "requests detection",
"a CGA",
"an MCGA",
"an EGA",
"a 64K EGA",
"a monochrome EGA",
"an IBM 8514",
"a Hercules monochrome",
"an AT&T 6300 PC",
"a VGA",
"an IBM 3270 PC"
};
int main(void)
{
/* used to return detected hardware info. */
int gdriver, gmode, errorcode;
/* detect the graphics hardware available */
detectgraph(&gdriver, &gmode);
/* read result of detectgraph call */
errorcode = graphresult();
if (errorcode != grOk) { /* an error occurred */
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
/* display the information detected */
clrscr();
printf("You have %s video display card.\n", dname[gdriver]);
printf("Press any key to halt:");
getch();
return 0;
}