9.1 图形应用技巧
9.1.1 显示适配器类型的自动测试
目前PC机及兼容机的显示器及其适配器的类型非常多,有单色的,也有彩色的。这些显示器及适配器的模式对应用程序来说是非常重要的。如何在程序中自动识别显示器的模式,以便更好地使用当前的显示模式是每个微机应用程序开发者的一个重要课题。下面程序可以方便测出当前显示器适配器的模式(有关具体知识,请参见其它相关的技术书籍)。
[例9-1] 测试显示适配器类型。
#include
#include
#define P(note) printf(note)
#define PV(format,value) printf(format ,v a l u e )
#define PM printf("mode is ")
#define PD printf("\n\tdetected graphics drive is")
void main( )
{
int gdrive,gerror,gmode;
detectgraph(&gdrive,&gmode); /* 标准测试函数*/
if(gdrive<0)
{
P("No graphics hardware detected !\n");
return;
}
switch (gdrive)
{
case 1: PD;
P("CGA");
switch(gmode)
{
case 0 :
PM;
P("CGAC0 320×200");
break;
case 1:
PM;
P("CGAC1 320×200");
break;
case 2:
PM;
P("CGAC2 320×200");
break;
case 3: PM; P("CGAC3 640×200"); break;
case 4: PM; P("CGAh4 320×200"); break;
}
break;
case 2: PD;
P("MCGA");
switch(gmode)
{
case 0: PM; P("MCGAC0 320×200"); break;
case 1: PM; P("MCGAC1 320×200"); break;
case 2: PM; P("MCGAC2 320×200"); break;
case 3: PM; P("MCGAC3 320×200"); break;
case 4: PM; P("MCGAC4 620×200"); break;
case 5: PM; P("MCGAC5 620×480"); break;
}
break;
case 3: PD;
P("EGA");
switch(gmode)
{
case 0 :PM;
P("EGALO 640×200");
break;
case 1:PM;
P("EGALO 640×350");
break;
}
break;