detectgraph


Syntax

#include <graphics.h>

void detectgraph(int *graphdriver, int *graphmode);



Description
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)
CGA1
MCGA2
EGA3
EGA644
EGAMONO5
IBM85146
HERCMONO7
ATT4008
VGA9
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 RowsPalette   Pages
CGACGAC00320 x 200C01
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 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 EGALO 0 640 x 200 16 color 4
 
EGAHI 1 640 x 350 16 color 2
 
EGA64 EGA64LO 0 640 x 200 16 color 1
 
EGA64HI 1 640 x 350 4 color 1
 
EGA-MONOEGAMONOHI 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
 
ATT400 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 color 1
ATT400HI 5 640 x 400 2 color 1
 
VGA VGALO 0 640 x 200 16 color 2
VGAMED 1 640 x 350 16 color 2
VGAHI 2 640 x 480 16 color 1
 
PC3270 PC3270HI 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.

Return Value
None.

Windows Notes [WIN]
The winbgim version of detectgraph returns VGA for the graphdriver and VGAHI for the graphmode, regardless of the machine's hardware. However, the screen is not necessarily 640 x 480.

See also
graphresult
initgraph

Example

/* 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;

}


Back to index